计算机体系结构基础最近的知识点

我是小康小白,一个平平无奇的Java小白。热爱有趣的文字,生活和远方。
个人博客:https://blog.csdn.net/weixin_45791445
有问题欢迎QQ联系:1059320343 (记得备注CSDN)

在这里插入图片描述

1. 常见通用计算机系统的四大层次以及连接层次之间的界面:

第一章的介绍:
应用系统,
—>应用程序编程接口API(生态建设的起点)
操作系统,
—>指令系统ISA(生态建设的终点)
硬件系统,
—>工艺模型
晶体管

补充:在API和ISA中间还有一层应用程序二进制接口(ABI)。ABI是应用程序访问计算机硬件以及操作系统服务的接口。
在这里插入图片描述

第二章的介绍:(从用户感知的应用软件到最底层的物理载体)
应用软件
基础软件
硬件逻辑
物理载体
在这里插入图片描述

指令系统介于软件和硬件之间,是软硬件交互的界面。

2. MIPS指令系统:

  • 调试模式

  • 根模式

    • 核心模式
    • 监管模式(很少使用)
    • 用户模式
  • 客户模式

    • 核心模式
    • 监管模式(很少使用)
    • 用户模式

根-核心模式和调试模式可以控制所有的处理器资源,
根-用户模式和客户-用户模式只能控制各自模式的资源,
客户-核心模式可以控制所有的客户-用户资源。
在这里插入图片描述

3.指令系统

  • 根据指令长度的不同,指令系统分为:

    • 复杂 指令系统(CISC):指令长度可变。
    • 精简指令系统(RISC):指令长度比较固定。有利于指令流水先的高效实现
      精髓在于简化指令间关系,有利于指令流水线高效实现。
    • 超长指令字:本质是多条同时执行的指令的组合,其“同时执行”的特征由编辑器指定,无需硬件进行判断。
  • 指令集结构:
    指令集时指令系统提供给软件的直接接口。
    指令系统有时也会狭义地理解为指令集结构。

  • 指令:
    每条指令倒是一个操作的描述,主要包括操作码操作数
    操作码包括指令系统,例如加减法。
    操作数据指示操作对象,又包括数据类型,访问地址,寻址方式等内容的定义。

  • 访存地址

    • 访存地址的对齐:
      对齐访问是指对该数据的访问地址和结束地址都符合其数据长度。
      如果支持不对齐访问,硬件就需要完成数据的拆分和拼合。

    • 大小尾端?
      big endian:大尾端,也称大端(高位)优先存储。最高有效字节的地址较小的是大尾端。
      little endian:小尾端,也称小端(低位)优先存储。最低有效字节的地址较小的是小尾端。

       如下对00000000 00000000 00000000 00000001的存储?
      

      大尾端: 00000000 00000000 00000000 00000001

       addr+0   addr+1    addr+2  addr+3    //先存高有效位(在低地址) 
      

      小尾端: 00000001 00000000 00000000 00000000

       addr+0   addr+1    addr+2  addr+3    //先存低有效位(在低地址)
      
  • Load和Store的区别?

      以LOAD R1 A
      和STORE C,R3这两条命令进行讲解。
      在第一条指令中LOAD表示从存储器中读取数据A然后保存到R1寄存器中
      第二条指令中STORE表示将C保存到存储器R3中。
    
  • 从功能上分,指令可分为四大类:

    • 运算指令:加减乘除,移位,逻辑运算等。

    • 访存指令:负责对存储器的读写。

    • 转移指令:控制程序的流向。
      (1)两大要素:转移条件和转移地址。
      (2)两要素的组合构成了不同的转移指令:
      在这里插入图片描述

    • 特殊指令: 用于操作系统的特定功能。

  • 公共指令功能
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 对于跳转指令:
    PC 相对地址跳转指令称为“分支”,绝对地址跳转指令称为“跳转“。

  • 延迟槽:
    RISC指令集中很多条件转移采用了延迟槽技术。
    程序中 条件 转移指令的后一条指令位延迟槽指令。
    分支延迟槽 (Branch delay slot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交 (commit)。

在这里插入图片描述

  • MIPS常用指令集
    lb/lh/lw: 从存储器中读取一个byte/half word/word的数据到寄存器中.如lb $1, 0($2)
    sb/sh/sw: 把一个byte/half word/word的数据从寄存器存储到存储器中.如 sb $1, 0($2)
    add/addu:把两个定点寄存器的内容相加add $1,$2,$3($1=$2+$3);u为不带符号加。

addi/addiu:把一个寄存器的内容加上一个立即数add $1,$2,#3($1=$2+3);u为不带符号加。
sub/subu:把两个定点寄存器的内容相减。
div/divu:两个定点寄存器的内容相除。
mul/mulu:两个定点寄存器的内容相乘。
and/andi:与运算,两个寄存器中的内容相与and $1,$2,$3($1=$2 & $3);i为立即数。
or/ori:或运算。
xor/xori:异或运算。
beq/beqz/benz/bne:条件转移eq相等,z零,ne不等。
j/jr/jal/jalr:j直接跳转;jr使用寄存器跳转;
lui:把一个16位的立即数填入到寄存器的高16位,低16位补零。
sll/srl:逻辑左移/右移sll $1,$2,#2。
slt/slti/sltui:如果$2的值小于$3,那么设置$1的值为1,否则设置$1的值为0。slt $1,$2,$3。
mov/movz/movn:复制,n为负,z为零。mov $1,$2; movz $1,$2,$3($3为零则复制$2到$1)。
trap:根据地址向量转入管态。
eret:从异常中返回到用户态。

add是有符号数加法,addu是无符号数加法。
区别:add指令执行附加的溢出检测,如果运算结果溢出,会触发异常。
在这里插入图片描述

C语言代码转换为MIPS机器表示

  • C语言等高级语言编写的程序必须经过编辑器转化为汇编语言,再由汇编器转换为指令码才能在CPU上执行。

  • 对下图的解释:
    在这里插入图片描述
    执行顺序:
    1.add:(add是被调用的子程序)

      addu  v0,a0,a1
      	addu:这是一个操作码,把两个定点寄存器的内容不带符号相加add $1,$2,$3($1=$2+$3);(相似的指令见上文)
      	v0,a0,a1是三个寄存器
      	而这条指令是将会将输入的参数保存到a0,a1两个寄存器中,并将结果保存到v0寄存器中。
      jr ra
      	jr:负责函数返回的指令,属于间接跳转指令,该指令的操作数为寄存器,因此MIPS汇编中常见的函数返回指令是
      			JR RA
      		指令的后一条指令其延迟槽,延迟槽内的指令先于JR指令执行。
      	调用函数时才会执行此指令。
    

    ref:(函数)

      addiu  sp,sp,-32指令
      		addi/addiu:把一个寄存器的内容加上一个立即数add $1,$2,#3($1=$2+3);u为不带符号加。
      		这条指令给sp寄存器中加上-32,并将结果保存到sp寄存器中。
      sw  ra,28(sp)
      		sw:sw rt,imm(rs)将rt寄存器中存放的值保存到rs寄存器中存放的值
      			加上立即数imm进行符号扩展后得到的扩展立即数所得的内存地址的内存单元中,
      			即memory[rs + (SignExtend)immediate] <- rt
      		这条指令是
      li a0,12
      	这条指令将12保存到a0这个寄存器中。
      li a1,34
      	这条指令将34保存到a1
      jal add
      	jal:调用函数,属于绝对转移指令,该指令在跳转的同时还将下一条指令(延迟槽除外)的地址放入31号通用寄存器
      		(记为RA)中,作为函数放回地址。	
      		在这条指令中,它调用了add函数。
      lw ra,28(sp)
    

注:这个解释未写完,小白后面会补完的。

4. 存储管理

  • 段式存储管理的地址转换的过程:

    • 地址转换时根据短号检索段表,得到对应段的起始物理地址(由段长度和基址可得),
    • 对应段的起始物理地址加上段内偏移得到最终的物理地址。
      补充:段式需要判断段地址的合法性。
      在这里插入图片描述
  • 页式存储管理的地址转换过程:

    • 根据虚拟页号检索页表,得到对应的物理页号,
    • 物理页号和页内偏移组合得到最终的物理地址。
      在这里插入图片描述
  • 段页式存储管理的地址转换过程(虚拟地址分为段号,虚拟页号和页内偏移):

  • 段里面存储的是多张页表。

    • 首先根据短号查询段表得到对应段的页表起始地址
    • 根据页表起始地址和虚拟页号查询页表得到物理页号,
    • 物理页号与业内偏移组合得到最终的物理地址。
      补充:段页式同样需要检查段地址的合法性。

    在这里插入图片描述

5.特权指令系统简介

特权指令系统就其机制而言,可以分为以下几类
(1)运行模式定义及转换
在这里插入图片描述
(2)虚拟存储管理
在这里插入图片描述
(3)异常和中断处理
在这里插入图片描述
(4)控制寄存器
控制寄存器位于一个独立的地址空间,是支撑前面3种机制的具体实现。不同的指令系统差别较大。

5.异常和中断

  • 异常和中断是一种打断正常的软件执行流,切换到专门的处理函数的机制。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

6.MIPS的原子性方案:

使用LL(Load Linked)和SC(Store Conditional)指令来完成原子操作。由硬件维护一个LL bit,在LL指令访问莫内存地址后,若该地址被改写则修改LL bit状态,执行SC指令时检查LL bit来确定原子性。

猜你喜欢

转载自blog.csdn.net/weixin_45791445/article/details/107796206