CPU的基本结构与功能
CPI (Cycles Per Instruction)用于衡量电脑的性能
,指每条指令的时钟数
1 | CPI=TC/IC |
表示某个程序的所有指令的条数;TC表示执行某个程序所花费的时钟周期)
加深理解:
M【R【ebp】+8】指的是命令行参数首个地址,即char *str的地址,M【地址】等于在内存中取值,相当于这个就是strcpy的第二个实际参数str
而R【ebp】-16 意思就是buffer[0],即buffer的首地址
红线下面都是在CPU了里面进行操作
红线上面都是通过总线在外面进行操作
笔记:
取值令和PC+“1” 是并行的,(同时操作),“1”指一条指令的长度
在MIPS中,每个指令都是定长的,32位,占4位,因此实际上是PC+4
而在X86中,每个指令都不是定长的,是边长的,一定要在指令译码之后才能确定指令有多长
异常和指令区别:
异常指和处理中的这条指令有关的的问题
中断指和处理中的指令无关的问题
MDR:内存数据寄存器
MAR: 主存地址寄存器
GPR 8个通用寄存器 属于可见寄存器
EFLAGs 标志寄存器 属于半可见寄存器
EIP 指令指针 属于半可见寄存器
绿色的地址实际上是虚拟空间的地址。这里假定
取值令
取地址放到EIP中,再放到主存地址寄存器当中。55 89 e5 放在主存。
控制器会发出读命令(红线),存储器会根据读信号根据传入的地址寻找里面的数值
过一段时间后(取数时间) 数据就会放在数据线上。
指令译码
根据功能产生控制信号
R[esp]<-R[esp]-4 ESP处的地址-4 变成 bffefffc
M[R[esp]]<-R[ebp]
esp内容放到MAR
写信号,把要写的地址bffeffc 和写的内容(MDR中的bfff0020)传输到存储器中
而eax是0号寄存器,edx是2号寄存器
经过这条指令之后
结果变成这样
小结
练习答案
什么是指令寄存器?什么是程序计数器?
指令寄存器(IR,Instruction Register),是临时放置从内存里面取得的程序指令的寄存器,用于存放当前从主存储器读出的正在执行的一条指令。
什么是程序计数器PC?
程序计数器是用于存放下一条指令所在单元的地址的地方。
当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
访问存储操作与基本术语
存储器的分类
按工作性质/存储方式分类
- Random Access Memory(RAM)
随机存取存储器
每个单元读写时间一样,与各单元所在位置无关,如内存
2.Sequential Access Memo在ry(SAM)
顺序采取存储器
数据按照顺序从存储载体的始端读出或者写入,因此存取时间长短与所在信息的位置有关。如磁带
其他分类方式
按功能/容量/速度/所在位置分类
寄存器:
封装在CPU中,用于存放当前执行的指令以及使用的数据
用触发器实现,速度快,x86 8个,MIPS 32个
高速存储(cache):
位于CPU内部或者附近,用来存放当前要执行的局部程序段和数据
用SRAM实现,速度可以与CPU匹配,容量小
内存与外存关系:
存储器受CPU总线控制,总线就是链接CPU和存储器的数据线,地址线和控制线
由于地址线是36位,因此存储单元地址有2^36种可能性,即可以寻找地址的范围为0-2^32-1 即64GB
Tmc>TA