计算机系统结构总结_Instruction Set Architecture

Posted pdev

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机系统结构总结_Instruction Set Architecture相关的知识,希望对你有一定的参考价值。

Textbook:
《计算机组成与设计——硬件/软件接口》    HI
《计算机体系结构——量化研究方法》           QR


这节我们来看CPU内部的一些东西。

 

Instruction Set Architecture

指令集是介于硬件(CPU microarchitecture / IO / ....)和软件(compiler / OS / ....)之间的一个interface。硬件(486-586-PentiumPro)和软件(Win98-WinXP)都会更新换代,但指令集很少变化(比如x86)。现在比较流行的是General-purpose register architecture,这也是我们重点学习的。早期还有stack architecture和accumulator architecture,不过已经不流行了...

Java VM:HI P89

 

Register

寄存器是在cpu内部的存储单元,访问简单,速度也非常快。

和前面说的cache不同,寄存器是对软件可见的(explictly managed)。比如下面的一段程序:

 1 void foo(){
 2     ....
 3 }
 4 
 5 void bar(){
 6     int a,b;
 7     a=233;
 8     foo();
 9     printf("%d
", a);
10 }

foo()和bar()都可能会用满所有的寄存器。那么在Line 8调用foo()之前,编译器就要手动把bar()当前运行时寄存器的值备份一下,等foo()结束后再还原回来。

 

Memory Addressing

指令可以分为以下几类:

  • Load/Store就是在内存和寄存器之间搬运数据......
  • ALU operation是用来计算的。它操作数据的主要来源是寄存器
    • 在RISC中,ALU inst只能从寄存器中读写,不能读内存地址。而在x86中一条指令最多可以读写1个内存地址

那么指令是如何进行memory addressing呢?要考虑如下几个问题:

  1. Bytes addressed。即每个地址包含多少个byte。大多数情况下是一次读一个byte(参考这张图)。也有些奇怪的机器是一次读一个word(多个bytes)
  2. Little/Big Endian
  3. Alignment。比如4bytes alignment表示每个数据的起始地址必须是4 bytes的倍数。

Addressing Mode:(PPT P6)

 

Control Flow Instructions

 

以上是关于计算机系统结构总结_Instruction Set Architecture的主要内容,如果未能解决你的问题,请参考以下文章

计算机系统结构总结_Multiprocessor

计算机系统结构总结_Memory Hierarchy and Cache Optimization

计算机系统结构总结_Memory Hierarchy and Memory Performance

eBPF Instruction Set

eBPF Instruction Set

PIC18Fxxx Instruction Set