自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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

原创 DMA过程分析

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

2014-05-30 17:40:58 7937

原创 ARMv8 Linux内核源码分析:__flush_dcache_all()

ARMv8 Linux内核源码分析:__flush_dcache_all()

2014-05-30 16:56:35 3234

原创 ARMv7用户层发生指令异常的处理流程?是否每个进程都有一个APSR的副本?

1、用户层发生指令异常的处理流程?用户层程序正在执行时,遇到未定义的指令(ARM不是别的指令)或者SWI软件中断指令(产生系统调用),就会产生异常,这里以未定义指令异常为例进行说明:         一旦出现未定义指令异常,CPU会自动做如下操作:(1)未定义模式(ARM其中运行模式的一种)下对应的lr(即R14)寄存器保存当前发生异常的指令下一条指令的地址。例如,在用户态有A B C

2014-05-29 11:52:31 3525

原创 关于ARMv8指令的几个问题

问题一:ARMv8 branch指令格式及用法(《ARMv8 ISA overview》中 page 25有相关叙述):问题二:ARMv8指令分类:问题三:ARMv8有没有两个目的操作数的指令?问题四:ARMv8中源操作数超过三个的指令及分类:问题五:branch指令向前向后跳转的区别

2014-05-29 11:48:39 7377 5

原创 simplescalar CPU模拟器源码分析

Sim-outorder.cMain函数Fetch ——> despetch——> issue——> writeback ——>commitCode text——>fetch queue ——> RUU/LSQ(—>readyqueue)—...

2014-05-29 11:45:18 5336

原创 关于ARMv8另外几个问题

之前没有ARMv8手册,所有问题只能从Linux内核源码中找答案,例如一下几个问题:问题1:支持ARMv8的Linux内核异常向量地址在哪?问题2:找出TLB中存放的ARMv8的页表格式?问题3:ARMv8中重要的控制寄存器的各位的意思是什么?

2014-05-29 11:41:58 6343

原创 从编译器源码中提取ARMv8的指令编码

2012年时,ARMv8 体系结构手册还没发布,当时项目需要ARMv8指令编码,我就从ARMv8交叉编译工具链的binutils中提取出了所有ARMv8指令的二进制编码,虽然ARMv8手册中已经详细公布,但方法还是值得一读。现把方法列出。

2014-05-29 11:40:00 4217

原创 虚拟化Xen平台中,Dom0和DomU之间发送网络数据时各个部分所运行时间

虚拟化Xen平台中,Dom0和DomU之间发送网络数据时各个部分所运行时间

2014-05-28 16:02:23 3461

原创 vSphere,ESXi,vCenter之间的关系

vSphere,ESXi,vCenter之间的关系

2014-05-22 12:03:03 14564

转载 帮你理解网关、ARP、IP、MAC、路由

假设你叫小不点(本地主机),住在一个大院子(本地局域网)里,有很多邻居(网络邻居),门口传达室有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个伙伴玩,只要你在院子里大喊一声他的名字(ping他一下),他听到了就会回应你,并且跑出来跟你玩。 但是你不被允许走出大门,你与外界的一切联系,都必须李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一

2014-05-16 10:52:51 2012

关于内核动态补丁技术(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关注的人

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