自定义博客皮肤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)
  • 收藏
  • 关注

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

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

2014-05-30 16:56:35 3276

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

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

2014-05-29 11:52:31 3541

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

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

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

原创 simplescalar CPU模拟器源码分析

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

2014-05-29 11:45:18 5369

原创 关于ARMv8另外几个问题

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

2014-05-29 11:41:58 6357

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

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

2014-05-29 11:40:00 4239

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

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

2014-05-28 16:02:23 3480

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

vSphere,ESXi,vCenter之间的关系

2014-05-22 12:03:03 14616

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

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

2014-05-16 10:52:51 2036

原创 linux下通过命令行使用Vtune统计处理器微体系结构特征

关于Vtune的介绍见官网,它可以调用intel处理器的底层performence counter,统计类似TLB miss、L1 cache miss等微体系结构信息。用界面的方式使用Vtune比较方便,但是要同时控制多台机器上的Vtune并抓取相应数据时,界面方式就不行了。使用shell命令行方式非常方便。可以用ssh无密码登录到其他节点,几乎同时调用vtune并开始统计。 vtune统计微体系结构信息分两部分,收集原始数据和对收集的数据做分析:

2014-04-25 21:31:41 8762

原创 spark0.9.1集群模式运行graphx测试程序(LiveJournalPageRank,新增Connected Components)

spark最新版发布了,之前的版本就已经集成了graphx,这个版本还改了一些bug。我做了简单测试,不过网上关于集群模式运行spark资料太少了,只有关于EC2(https://github.com/amplab/graphx/wiki/Launch-a-benchmarking-cluster)的,但是还很旧,好多命令都有变化了。很讨厌写安装类的博客不注明当前使用软件的版本,这是常识好不好?!

2014-04-21 17:32:58 5723

转载 shell 语法示例

#!/bin/shecho "This is the first shell script!"#=============This is comment.============#==================变量===================a="hello world!"echo $aecho "I am student. $a"#=================

2014-04-04 15:26:13 1275

原创 【解决】Xstart连接服务器桌面报错:Failed to connect to the session manager: IO error occurred opening connection

服务器系统:Centos6.2原因:xlibs太旧解决办法:yum install libX11

2014-04-04 10:49:45 4379

原创 【解决】centos6.2 spark cluster问题(持续追加)

使用spark遇到的问题总结,及解决办法

2014-04-03 22:46:37 16613 1

转载 linux下gsl安装问题与解决

从http://www.gnu.org/software/gsl/上下载, 按照提示安装之后,一切没有问题, 但是把manual中给出的例子拿来算, 却总不能编译成功. 错误信息为头文件中定义的函数函数没有定义.像下面的例子中,#include #include int main(){        gsl_block * b = gsl_block_alloc(100);

2014-03-19 15:01:23 12723

原创 Spark0.8.0在64bit Centos6.2上详细安装记录

Spark0.8.0在16节点机群上的详细安装记录。

2014-03-18 09:00:11 3591

原创 cpio文件系统的解压和制作方法

cpio解压方法:    1.  # gunzip  XXX.cpio.gz    2. cpio -idmv 制作cpio格式文件系统的方法:    1. 执行gen_initramfs_list.sh脚本:    # gen_initramfs_list.sh ./Filesystem/ >filelist      其中Filesy

2014-03-06 18:17:54 36306

翻译 比较虚拟机中文件系统的性能

基于虚拟机并使用Vagrant(译注:Vagrant用于创建和部署自动化虚拟化开发环境)开发环境主要瓶颈是文件系统的性能。各平台的CPU区别是很小的,甚至可以忽略不计,而且RAM只有在很多虚拟机(译注:指同一台物理机上的虚拟机)都活跃时才会成为性能瓶颈。昨天我花了大部分时间测试并分析了通用的文件系统机制,现在把我得到的结果分享给你们。

2014-03-01 14:26:03 3979

原创 通过cat /proc/cpuinfo看处理器特点

通过cat /proc/cpuinfo看处理器特点

2014-02-27 15:27:38 16325

原创 Centos6.2挂载新硬盘、分区、格式化、挂载

Centos6.2挂载新硬盘、分区、格式化、挂载

2014-02-26 16:11:19 6604

原创 做到以下几点,一篇学术论文就能研究明白

之前有篇翻译,从步骤上讲述如何读一篇论文,以下我要说的是关于读论文时应该思考的内容,结合之前的翻译的文章,读论文时带着如下问题,就能顺利搞清楚一篇论文的所有内容。

2014-02-20 11:09:35 1861

转载 Hadoop工具箱:到底应该什么时候用哪一个?

Eight years ago not even Doug Cutting would have thought that the tool which he's naming after his kid's soft toy would so soon become a rage and change the way people and organizations look at

2014-02-18 10:14:24 1542

原创 关于“缓存着色(cache coloring, page coloring)”技术的相关资料介绍

关于缓存着色(cache coloring)的相关资料

2014-01-08 17:22:22 7092 1

转载 Should volatile Acquire Atomicity and Thread Visibility Semantics?

Doc. no.N2016=06-0086Date:2006-04-21Reply to:Hans Boehm Authors:Hans Boehm & Nick MaclarenShould volatile Acquire Atomicity and Thread Visibility Semantics?Traditio

2013-12-25 11:39:34 1288

转载 Volatile: Almost Useless for Multi-Threaded Programming

Volatile: Almost Useless for Multi-Threaded ProgrammingSubmitted by Arch D. Robison... on Fri, 11/30/2007 - 12:44There is a widespread notion that the keyword volatile is g

2013-12-25 11:38:26 1385

转载 Why the "volatile" type class should not be used

------------------------------------------------C programmers have often taken volatile to mean that the variable could bechanged outside of the current thread of execution; as a result, they ares

2013-12-23 10:26:46 1456

转载 核间中断IPI的机制

XLR 732 多核多线程处理器的中断由 PIC(Programmable Interrupt Controller)统一控制。PIC 允许一个硬件线程中断其他的硬件线程,这种方式被称为核间中断(Inter-Processor Interrupts,IPI)。PIC 拥有一个宽度为 32 位的核间中断寄存器IPIBase,该寄存器包含目的线程的编号、中断向量及中断类型(是否中断多个硬件线程

2013-12-21 11:10:25 14589

翻译 编译器如何工作?

解释编译器如何工作不是一件容易的事,最好的方法是用一个实例进行说明: 编译器是这样一个电脑程序,它把用高级编程语言编写的源代码,转化成低级语言。最基本地,一个编译器由以下几个阶段组成:词法分析、语法分析、语义分析、IR(中间代码,intermediateRepresentation)产生、IR优化、代码产生、最终优化。

2013-12-09 22:48:30 1929

转载 编译器基本过程

编译器最基本的功能就是把高级语言(例如C/Fortran)编写的代码转化为机器指令(就是01串),从这个角度来说它本质上是个转换过程。经典的编译过程主要包括:1、       词法分析(Lexical Analysis)词法分析就是从输入代码中识别出各种记号(token),例如对于C语言我们就需要知道if,else等是语言的关键字,myvar是个标识,而123myvar不能被识别为一个标识

2013-12-09 22:39:03 1784

转载 linux下补丁(patch)的制作与应用

命令简介用到的两个命令是diff和patch。diffdiff可以比较两个东西,并可同时记录下二者的区别。制作补丁时的一般用法和常见选项为:diff 【选项】 源文件(夹) 目的文件(夹)-r递归。设置后diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。-N选项确保补丁文件将正确地处理已经创建或删除文件的情况。-u输出每个修

2013-11-28 09:17:20 1890

转载 ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的

几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。     ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。     我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin.     在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的。     先不说中断

2013-11-09 14:29:13 2172

转载 结构体中,内存对齐解释

看过很多关于结构体对齐的资料,这个是解释最清楚的,转过来备份。很多人都觉得内存对齐这个问题很难,很不好算,总算错,其实我想说只要你画一画就没那么难了。好了,进入正题。本节知识点:1.结构体为什么要内存对齐(也叫字节对齐):其实我们都知道,结构体只是一些数据的集合,它本身什么都没有。我们所谓的结构体地址,其实就是结构体第一个元素的地址。这样,如果结构体各个元素之间不存在内

2013-11-06 14:16:27 1345

转载 大牛订阅的十佳博客与相关介绍

前段时间,我在微博上分享了自己订阅的博客Feeds,一共有200个左右,内容覆盖多个领域,包括有:Database(MySQL、Oracle、PostgreSQL),Programming,Distributed Systems,Systems 等。俗话说,过犹不及,太多的选择,往往意味着没有选择。在过去的几年,对于自己订阅的所有博客,我基本上做到每天都看,因此对每个博客的内容有了一定的了解。本文

2013-11-06 10:25:19 2602

转载 数学常数e的含义

1.e是一个重要的常数,但是我一直不知道,它的真正含义是什么。它不像π。大家都知道,π代表了圆的周长与直径之比3.14159,可是如果我问你,e代表了什么。你能回答吗?维基百科说:“e是自然对数的底数。”但是,你去看“自然对数”,得到的解释却是:“自然对数是以e为底的对数函数,e是一个无理数,约等于2.718281828。”这

2013-11-06 10:22:46 1850

翻译 怎样开发不可维护的软件

作者在文中提到了工作中碰到的各种各样不具有可维护性的项目工程,并用血的经历告诫大家,如果遵循文中所讲这几条,您的软件将走上不可维护的不归路。其中包括了“不使用版本控制”、“大量定制自己的开发环境”、“不设置测试平台”、“将依赖关系添加到特定的库和资源中……但是不要维护这些文档”等。

2013-10-22 21:26:54 1828

原创 【笔试题】插入排序

笔试题,插入排序找错。

2013-10-22 09:20:45 1541 1

原创 如何编写100% cache miss的C程序

如何编写保证100%cache miss的程序?本文将作出讲述及详细代码分析。

2013-10-19 18:08:59 13111 5

原创 【纠错】关于变量定义和声明的区别

下面哪个是声明,哪个是定义? (A) int i; (B) extern int i;《C语言深度剖析》给的答案是:A是定义,B是声明。我的答案是:A是声明,B也是声明。

2013-10-07 22:26:48 2049 4

翻译 教孩子们编程 ——附相关有用的资料

我一直在不懈收集最好的教孩子、青少年编程的资源,包括书籍,编程环境,应用,课件,游戏等等。这些资源对于那些想让他们的孩子喜欢上电脑,并发现编程的魔力的老师、父母是很有用的。我才不去理会那些关于是否应该让孩子们学习编程、应该什么时候开始等等哲学类讨论,我只知道在3年级时我就爱上了电脑(一台性感的ZXSpectrum。译者注:ZX Spectrum是英国辛克莱研究公司1982年发布的8bit个人电脑,见上面的附图),而且我也想与其他人分享编程的乐趣。

2013-10-05 21:28:11 2566

转载 妈咪,我找到了!15实用的Linux find命令示例

除了在一个目录结构下查找文件这种基本的操作,你还可以用find命令实现一些实用的操作,使你的命令行之旅更加简易。本文将介绍15种无论是于新手还是老鸟都非常有用的Linux find命令。首先,在你的home目录下面创建下面的空文件,来测试下面的find命令示例。 # vim create_sample_files.shtouch MybashProgram.shtouch

2013-09-27 09:14:01 2096

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

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