多地址指令实际访存次数
指令
机器指令按照含有的地址数目可以分为1,2,3,4地址指令。
其中指令中存放的地址都是虚拟地址,不是实际物理地址。
一般访存次数
一般来说,举个例子:三地址指令
(A1)OP(A2)->A3
访存了4次:取指令->读A1->读A2->写到A3
这是最好的情况,考虑到需要访问的页表项,都在”快表TLB”之中可以找到,因此转换地址都不需要访存。
实际访存次数
三地址指令需要访存次数和一地址指令类似,也要考虑TLB、页表、磁盘之间的命中情况。
如果TLB中存在对应的页表项,那么就可以直接访问内存,不需要再查询页表。这时候,三地址指令需要访存4次:一次是读取指令,两次是读取操作数,一次是写入结果。
如果TLB中不存在对应的页表项,那么就需要查询页表,这时候就要多访问两次内存:一次是读取页表项,一次是读取数据。这时候,三地址指令需要访存7次:一次是读取指令,两次是读取操作数,三次是读取页表项,一次是写入结果。
如果页表中也不存在对应的页表项,那么就发生缺页,需要从磁盘中读取数据到内存,并更新页表和TLB。这时候就要多访问一次磁盘。这时候,三地址指令需要访存7次:一次是读取指令,两次是读取操作数,两次是读取页表项,一次是写入结果,一次是从磁盘读取数据。
所以,三地址指令需要访存次数和TLB、页表、磁盘之间的命中情况有关,不一定是7次。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风起之时'blog!











