自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(159)
  • 资源 (5)
  • 收藏
  • 关注

原创 gem5中event queue运行原理机制详细分析

gem5中如何实现单线程程序模拟处理器cycle步进?主要是由event机制驱动的。

2017-01-21 16:54:23 4932 13

原创 ARM上电启动及Uboot代码分析

网上关于ARM的bootloader(以Uboot为例)的启动顺序的资料有好多,但是对于Uboot的地址映射、体系结构级操作介绍很少,都是直接开始Start.s代码的阅读。本文拟详细分析Uboot从上电,到第一条指令的执行,同时分析代码对于cache、TLB等部件的操作过程。以下内容以u-boot-2012.04.01源码为例,从网上很容易下载该版本。

2014-05-30 17:30:56 17810 72

原创 ARMv8 Linux内核异常处理过程分析

看了Linaro提供的开源ARMv8 Linux内核源码,发现ARMv8异常处理与ARMv7及之前的架构有所不同,详细分析之。

2014-05-30 17:13:12 9181

原创 ARM多核处理器启动过程分析

你想知道多核处理器是否如何启动的?一张图就够了

2014-05-30 17:00:01 25569 1

原创 ARMv7处理器各个模式之间是如何切换的?模式切换时上下文的保存哪些是硬件在做?哪些是操作系统在做?

ARMv7处理器各个模式之间是如何切换的?模式切换时上下文的保存哪些是硬件在做?哪些是操作系统在做?

2014-05-29 11:50:41 3785

原创 如何在github中贡献自己的力量

介绍参与github的方法及建议

2013-09-10 16:59:31 33676 2

翻译 【How to read a paper】如何读论文

摘要:科研人员花费大量时间阅读科研论文。然而,我们几乎没学过读论文的方法,这会浪费我们大部分的辛勤劳动。这篇文章概括了一个实际而有效的读科研论文的“三步法”。我也讲述如何用这种方法完成文献调研工作。

2013-09-06 23:01:21 25820 1

原创 ARMv8(aarch64)页表建立过程详细分析

目录文件修订记录...2目录...31ARMv8存储管理...41.1Aarch64 Linux中的内存布局... 41.2AArch64的虚拟地址格式...41.2.14K页时的虚拟地址...41.2.264K页时的虚拟地址...52head.S页表建立过程分析...62.1页表建立函数__create_page_tables.62.1.1pgtbl

2013-06-08 17:39:57 28271 2

原创 ARM Linux中断机制分析

ARM Linux中断机制分析——以用户模式产生irq中断为例以下代码基于内核linux2.6.38.3(trimslice官网下载)本文主要分析ARM发生中断时的处理流程,以在usr态发生IRQ为例,即usr—>irq为例讨论。   1.内核异常向量表的初始化1.1初始化大致流程ARM linux内核启动时,首先运行的是linux/arch/arm/kerne

2013-02-21 14:46:04 14263 4

转载 linux内核代码预处理后便于阅读

inux 内核庞大而复杂。内核代码阅读的时候,有没有遇到因为宏定义或者inline层次太深而不知道到底代码是什么样子。代码预处理可以解决这个难题。 平台:linux 3.4.5 ARM,PC linux上类似,更简单些。加V=1重新编译内核make内核增加V=1选项,会详细打印编译过程,-B是要求重新编译内核所有模块。cd linux-3.4.5 && mak...

2018-12-25 15:28:33 1481 1

原创 内核动态补丁(kpatch)及kpatch pushsection popsection previous的解释

内核动态补丁(katch)解释本文阅读体验不好,因此做了pdf版本,点击下载,如果你没有分数,可以直接留言找我要pdf版本。内核可以在运行时动态执行补丁中的代码(kpatch),而不需要重启后再运行补丁代码。对于kpatch的运行原理,可以参看[3], kpatch基于ftrace技术,可以在内核运行时动态的(即不需要重启)、整体替换某个函数(但需要暂时停止所有运行时进程)。如图1所示,具...

2018-11-19 16:26:00 3040 4

原创 Flush-Cache/Page-Lock/Flush-TLB说明

    Flush-Cache/Page-Lock/Flush-TLB说明 理论上顺序:获得页面锁,保证后续flush操作完成之前不允许继续读写 Flush cache Flush tlb以下用numa_migrate_pages系统调用,内核中是kernel_migrate_pages服务函数,以X86体系结构作为说明内核代码流程:kernel_migrate_page...

2018-08-13 12:59:40 1039

原创 SPEC 2017 int rate command lines

SPEC 2017 int rate command linesBench name Command line Run time 500.perlbench_r (3 inputs) perlbench_r_base.64 -I./lib checkspam.pl 2500 5 25 11 150 1 1 1 1 > checkspam.2500.5.25.11.150.1.1.1...

2018-06-01 10:25:43 2856

原创 【解决】ping超级慢 dns解析不了的原因

用了各种办法,最后发现是两个网卡同时工作,导致包冲突:enp4s0f0  Link encap:以太网  硬件地址 00:25:90:5a:8c:80            inet 地址:172.16.64.57  广播:172.16.64.255  掩码:255.255.255.0          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1...

2018-03-31 15:03:06 9265 1

原创 Linux下不同用户使用不同版本gcc的方法

Linux下,有时经常需要使用不同版本gcc进行测试,尤其是有些大型程序,例如,如果第一次编译版本是gcc5.0,修改了其中一个文件,如果编译器改为gcc6.0,则运行时会出一些奇怪错误,甚至无法debug。我曾经遇到,类似一个问题,编译时不报错,运行时把其中一个int型数据0,当成了指针地址,报错segment fault,访问0地址错误。为了实现单独用户使用特定编译器版本,可以利用Linux下

2018-01-10 16:41:47 31250 5

原创 【解决】因为swap文件导致vim打开文件没有颜色高亮

有时因为swap文件导致,某些文件打开后没有颜色高亮,这是因为swap文件没有处理正确,导致vim无法判断打开文件的类型,进而丢失颜色。解决办法:在文件命令行执行命令:set filetype=cpp

2017-12-20 09:23:09 1418 2

原创 【解决】linux下svn权限配置不起作用

首先,使用svn时,对于svn的协议要明确:你到底使用哪个协议来完成访问svn库的操作?svn协议有以下两种:http(Apache); svn(svnserve)在局域网内部使用svn,一般用svnserve访问svn,如果需要通过网络访问用http比较适合。但是!!!如果自己在一台服务器上建立svn,那么在同一台服务器上不管哪个用户,只要用svn co file:///path/to/my/s

2017-05-23 16:07:23 3725

原创 gem5中O3模式下fetch_impl.hh源代码详细分析

gem5中如何通过软件模拟硬件执行的?fetch阶段如何进行指令取值处理?我准备把所有gem5代码都分析一遍。

2017-04-11 21:02:04 4225

原创 用valgrind kcachegind gprof2dot等生成函数调用图

为了分析大型软件动态运行时的函数调用关系,有时需要抓取其trace分析。目前一般有几种办法:

2017-03-16 10:16:39 2182

原创 仿真器和模拟器的区别

仿真器(emulator)和模拟器(simulator)是比较容易混淆的概念,这两个概念不仅针对计算机体系结构,在很多方面都有所应用,例如航空模拟器、街机仿真器等。模拟器(simulator)是用于分析研究目标系统本身,模拟器系统本身要跟目标系统保持一致。例如飞行模拟器对于用户来讲其本身要跟真正的飞机一致;再比如gem5模拟器,其本身要跟CPU所有内部行为一致(包括内部运行原理都要一致)。好的模拟

2017-02-27 21:16:56 7806 2

原创 python通过swig调用c程序举例

python调用c程序举例

2017-02-14 10:54:05 1139

原创 把所有软链接替换为真实文件

把所有软链接替换为真实文件

2017-01-22 12:47:07 4613

原创 最好用的vim配置 spf13-vim

spf vim 的快捷键记录

2017-01-16 09:07:19 4374 1

原创 运行gem5 ARM64 全系统

首先下载官网gem5 full system arm资源 aarch-system-2014-10.tar.xz 然后编译gem5:# scons build/ARM/gem5.opt -j20-j:指定多线程数,同时编译编写脚本:export M5_PATH=/path/to/gem5/fs-images/ARM./build/ARM/gem5.opt configs/example/fs.py

2017-01-12 16:10:09 3260

原创 修改vim使得cscope自动添加cscope.out

cscope 自动添加cscope.out

2017-01-03 08:59:21 2726

原创 ycsb cassandra 安装测试

1. YCSB安装wget https://github.com/downloads/brianfrankcooper/YCSB/ycsb-0.1.4.tar.gztar zxvf ycsb-0.1.4.tar.gzcd ycsb-0.1.4Or clone the git repository and build:git clone git://github.com/brianfrankcoop

2016-12-19 20:12:09 1300

原创 /usr/lib64/libstdc++.so.6: undefined reference to `memcpy@GLIBC_2.14'

swig下载地址https://sourceforge.net/projects/swig/files/swig/swig-2.0.7/如果遇到了错误:/usr/lib64/libstdc++.so.6: undefined reference to `memcpy@GLIBC_2.14'  说明你的glibc的版本太高,先把LD_LIBRARY_PATH连接到2.14的环境变量删除,也就是把gl

2016-11-25 11:33:59 11250

原创 源码安装swig

1. ./configure --prefix=/opt报错:configure: error:         Cannot find pcre-config script from PCRE (Perl Compatible Regular Expressions)        library package. This dependency is needed for configure

2016-11-24 11:33:24 2187

转载 升级glibc到2.14

转载:https://my.oschina.net/zhangxu0512/blog/262275今天运行一个例程,出现了/lib64/libc.so.6: version `GLIBC_2.14' not found问题,把解决过程简单记录一下。系统环境: centos6.2 现象:[root@localhost nvEncodeApp]# ./nvEncoder ./nvEncoder: /

2016-11-23 16:50:24 14722

原创 centos 6 gcc升级4.7/4.8

【解决】/lib/libc.so.6: version `GLIBC_2.14' not found

2016-11-23 15:35:22 1493

原创 【解决】挂载img文件时mount: you must specify the filesystem type

【解决】挂载img文件时mount: you must specify the filesystem type

2016-11-19 12:33:13 6359

原创 linux下配置svn服务器注意事项

网上很多配置说明,但是没有指出最重要的几个易错点,导致很多人很容易遇到错误绕不过去标准步骤:1. 关闭防火墙iptables和selinux:(http://www.2cto.com/Article/201305/208291.html)1. 永久有效修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。2. 即时生效setenforce

2016-08-19 15:33:05 2312

原创 kvm配置(频率、smt等)

ppc64_cpu --smt=on/off  开启/关闭smtvirsh list:列出vm及相关信息virsh vcpuinfo domain(): 列出vm的vcpu信息cpupower -c all frequency-info:列出所有cpu的频率cpupower frequency-set -f 3.69GHz:设置所有cpu的频率virsh edit rhel1:编辑vm配置文件(不

2015-01-15 15:37:27 2801

原创 KVM上如何绑定虚拟机vcpu与物理CPU?

kvm虚拟机如何与物理CPU进行绑定?绑定的是CPU硬件线程还是core?如何把虚拟机中vcpu单独与物理cpu绑定?绑定命令有几个?区别是什么?那么,答案来了:

2015-01-09 14:04:58 10773

原创 stream buffer原理

Stream buffer是一个用于在cache和memory或者L1cache和L2cache之间的预取器,相应地,其目的是用于替代L2cache或者减少L1cache的缺失率最原始的stream buffer由Jouppi(Improving direct-mapped cache performance by the addition of a small fully-associative cache and prefetch buffers.)一个人提出(牛逼吧?论文上也是一个作者),用于在L2

2014-11-26 16:00:25 7464

原创 【解决】/usr/bin/ld: cannot find -lc

【解决】/usr/bin/ld: cannot find -lc

2014-10-21 14:54:38 14309

原创 【解决】缺少libstdc++.so.6库的原因及解决办法

【解决】缺少libstdc++.so.6库的原因及解决办法

2014-10-15 11:29:44 66431 5

原创 【解答】关于内核中没开MMU之前的虚拟地址物理地址转换问题

1. 内核没开MMU之前有虚拟地址吗?没有MMU哪来的虚拟地址?答:有,因为加载时地址和运行时地址不同导致的没打开MMU之前也会有虚实地址问题。2. 加载时地址和运行时地址什么区别,为什么有这种区别?答:加载时地址:把可执行文件放到物理内存的内存地址,例如把镜像放到0x80000000地址处,则加载时地址=0x80000000运行时地址:镜像生成后的虚拟地址,由编译器和连接脚本决定。内核镜像放到内存中时,放置的地址是任意的,所以要考虑到这种情况,在没打开mmu之前使用内存中的数据都要计算偏移

2014-09-29 10:55:21 4168 4

转载 技术移民必看:工程师应该如何获得美国签证?

留做记录在旧金山市组织一个由非美国人组成的聚会,话题总免不了落到“移民”和“签证”上来。对于我们中的很多人来说,来到美国,本身就是一种壮举了。我们所有人,都能因为美国糟糕的签证系统而联系在一起。我们分享着彼此的经历,包括如何克服这个签证系统的各种各样的规则,阻碍和以及无处不在的官僚主义。就在五年前,当我还在英国工作的时候,我只是想移民美国,加入一个旧金山的技

2014-06-10 17:10:45 3495

原创 DMA过程分析

当我们在应用程序中编写write系统调用,向磁盘中写入数据时,写入请求会先调用底层写函数,将请求先写入内存中的页高速缓存(page cache)中,写入成功则立刻返回,真正的写入磁盘操作会延迟执行。Page cache是硬盘在内存中的一个缓存,是linux内核所使用的主要磁盘高速缓存,在绝大多数情况下,内核在读写磁盘时都引用page cache(极少数应用会绕过页高速缓存,如数据库软件)。

2014-05-30 17:40:58 7937

关于内核动态补丁技术(kpatch)

内核可以在运行时动态执行补丁中的代码(kpatch),而不需要重启后再运行补丁代码。对于kpatch的运行原理,可以参看[3], kpatch基于ftrace技术,可以在内核运行时动态的(即不需要重启)、整体替换某个函数(但需要暂时停止所有运行时进程)。如图1所示,具体的,当内核运行之前,加入原来的内核函数名字为func_original(),则内核编译时就先把patch做好(假设替换函数为func_replace()),同时编译进内核中。本文主要解释从gnu汇编原语角度如何实现kpatch,具体kpatch机制可以参考文献[3]。内核文件arch/arm64/include/asm/alternative.h中有一段汇编,涉及内核动态patch技术。

2018-11-19

SPEC 2017 int rate command lines

SPECCPU 2017 整型测试程序的命令行,从代码中抠出,用于单独运行benchmark进行实验

2018-06-01

Event in gem5

gem5底层如何实现模拟处理器并行执行的?如何实现准确计算cycle数?

2017-01-21

ARMv8 Linux内核异常处理分析

看了 Linaro 提供的开源 ARMv8 Linux 内核源码,发现 ARMv8 异常处理与 ARMv7 及之前的架构有所不同,详细分析之

2014-05-30

ARM上电启动及Uboot代码分析

网上关于ARM的bootloader(以Uboot为例)的启动顺序的资料有好多,但是对于Uboot的地址映射、体系结构级操作介绍很少,都是直接开始Start.s代码的阅读。本文拟详细分析Uboot从上电,到第一条指令的执行,同时分析代码对于cache、TLB等部件的操作过程。 以下内容以u-boot-2012.04.01源码为例,从网上很容易下载该版本。

2014-05-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除