指令

机器指令按照含有的地址数目可以分为1,2,3,4地址指令。
其中指令中存放的地址都是虚拟地址,不是实际物理地址。

一般访存次数

一般来说,举个例子:三地址指令
(A1)OP(A2)->A3
访存了4次:取指令->读A1->读A2->写到A3
这是最好的情况,考虑到需要访问的页表项,都在”快表TLB”之中可以找到,因此转换地址都不需要访存。

实际访存次数

三地址指令需要访存次数和一地址指令类似,也要考虑TLB、页表、磁盘之间的命中情况。

如果TLB中存在对应的页表项,那么就可以直接访问内存,不需要再查询页表。这时候,三地址指令需要访存4次:一次是读取指令,两次是读取操作数,一次是写入结果。

如果TLB中不存在对应的页表项,那么就需要查询页表,这时候就要多访问两次内存:一次是读取页表项,一次是读取数据。这时候,三地址指令需要访存7次:一次是读取指令,两次是读取操作数,三次是读取页表项,一次是写入结果。

如果页表中也不存在对应的页表项,那么就发生缺页,需要从磁盘中读取数据到内存,并更新页表和TLB。这时候就要多访问一次磁盘。这时候,三地址指令需要访存7次:一次是读取指令,两次是读取操作数,两次是读取页表项,一次是写入结果,一次是从磁盘读取数据。

所以,三地址指令需要访存次数和TLB、页表、磁盘之间的命中情况有关,不一定是7次。