汇编语言简易教程(2): 计算机体系概览

汇编语言简易教程(2): 计算机体系概览

架构

  1. CPU
  2. RAM
  3. BUS
  4. DEVICE
  5. Secondary Storage (SSD / Disk Drive)

通常来说程序被存储在硬盘中, 在实际需要运行时从硬盘加载到内存.

主存通常来说是易失性存储, 所以在断电时, 存储内容会丢失. 二级内存通常是不易失的, 对于断电等行为有一定的抗性.

数据存储大小

CPU组成

算术逻辑单元 (ALU), 算术以及逻辑运算

寄存器

通用寄存器概览

组成

一个寄存器可能会有多个名字, 真正影响的是操作位置

左高右低

栈帧寄存器 (RSP)

One of the CPU registers, rsp, is used to point to the current top of the stack. The rspregister should not be used for data or other use

用于存储当前栈顶指针, 不应该用于存储数据或其他使用.

基址寄存器 (RBP)

One of the CPU registers, rbp, is used as a base pointer during function calls. The rbpregister should not be used for data or other uses

用于在函数调用期间存储基址指针, 不应该用于存储数据或其他使用.

指令寄存器 (RIP)

In addition to the GPRs, there is a special register, rip, which is used by the CPU topoint to the next instruction to be executed. Specifically, since the rip points to thenext instruction, that means the instruction being pointed to by rip, and shown in thedebugger, has not yet been executed

用来指向下一条要执行的指令, 需要注意此时尚未开始执行.

标志寄存器 (rFlags)

一个示例: CMPXCHG

标志寄存器 rFlags 用于状态和 CPU 控制信息.

rFlag 寄存器在每条指令后由 CPU 更新,并且不能由程序直接访问。

该寄存器存储有关刚刚执行的指令的状态信息。 rFlag 寄存器中的 64 位中,许多保留供将来使用

常见的标志寄存器

名称 符号表示 bit位 用途
Carry CF 0 用于指示前一个操作是否产生进位
Parity PF 2 用于指示最后一个字节是否有偶数个1
Adjust AF 4 用于支持二进制编码的十进制运算
Zero ZF 6 用于指示先前操作是否导致结果为零 CMPXCHG
Sign SF 7 用于指示前一操作的结果是否在最高有效位中产生 1(在有符号数据的上下文中指示负数)
Direction DF 10 用于指定某些字符串操作的方向(递增或递减)
Overflow OF 11 用于指示之前的操作是否导致溢出

XMM 寄存器

专用寄存器用于支持 64 位和 32 位浮点运算以及单指令多数据 (SIMD) 指令。

SIMD 指令允许将单个指令同时应用于多个数据项。有效地使用,可以显着提高性能。典型应用包括一些图形处理和数字信号处理

根本原因是: 一个像素点的颜色的一个分量是通过8bit来操作的, 如果直接使用通用寄存器来处理的话, 会有比较大的浪费.

可以参考下图:


将一个128bit的寄存器, 按照8bit一组的方式分成了16组.

请注意,一些较新的 X86-64 处理器支持 256 位 XMM 寄存器

SP

Cache

通常来说是主存的子集, 位于CPU中

如果一个主存位置被访问, cache中会存储这个值的拷贝.

快速连续发生的对该内存位置的后续访问将从高速缓存位置(CPU 芯片内部)的查找。

内存读取涉及通过总线将地址发送到内存控制器,内存控制器将获取所请求内存位置的值,然后通过总线将其发送回。相比之下,如果某个值在缓存中,则访问该值会快得多

当可以在缓存中找到所请求的数据时,发生缓存命中,而当无法在缓存中找到时,发生缓存未命中。

高速缓存命中是通过从高速缓存读取数据来实现的,这比从主内存读取数据要快。

缓存可以处理的请求越多,系统通常执行的速度就越快。

历代CPU芯片都增加了高速缓存并改进了高速缓存映射策略,以提高整体性能

一个典型的CPU cache架构如下图所示:

目前的芯片设计通常包括每个核心一个 L1 高速缓存和一个共享的 L2 高速缓存。

许多较新的 CPU 芯片将有一个额外的 L3 高速缓存.

从图中可以看出,所有内存访问都会经过每一级缓存。

因此,可能存在该值的多个重复副本(CPU 寄存器、L1 缓存、L2 缓存和主内存)。

主存

主存可以被看做是连续的字节.

主存是可以定位的 (如同数组可以通过下标定位一样)

另外需要注意: 其架构是小端序, 这意味着最低有效字节(LSB)存储在最低的内存地址中。最高有效字节 (MSB) 存储在最高内存位置。

我们以 5,000,000 (0x004C4B4016) 举例

可以参考: 编码序

通常来说在网络传输中使用的是大端序

在内存中运行时是小端序.

程序的内存布局

  1. 保留部分对用户程序不可用
  2. 文本段/代码段 是用来存储机器码的位置
  3. 数据段用来存储初始化数据
  4. BSS: 存储未提供初始值的已声明变量的位置。如果在设置之前访问,该值将没有意义。
  5. 堆是存储动态分配的数据的位置(如果需要)。
  6. 堆栈从高内存开始并向下增长

计算机存储结构

存储金字塔

典型的存储金字塔如上所示

越在顶端的存储速度越快, 价格越高, 容量越小

在底层的存储通常来说能够在相同的价格上提供数量级的存储容量提升, 以及数量级的慢速.

典型速度

  • 寄存器, 大小通常是64bit, 速度在1 ns 以内
  • CPU Cache, 大小一般在MB左右, 访问速度在50-60 ns
  • 主存, 一般在GB数量级, 访问速度在 100 - 150 ns
  • 次级存储/硬盘存储, TB量级, 3 - 15ms
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容