zoukankan      html  css  js  c++  java
  • 计算机系统导论——读书笔记——第四章 处理器体系结构

    2019年10月14日

     

    1.指令集体系结构(Instruction-Set Architecture, ISA):一个处理器支持的指令和指令的字节级编码.

    2.硬件控制语言(Hardware Control Language, HCL):一种描述硬件系统控制部分的简单语言.

     

    4.1 Y86-64指令集体系结构

    状态单元、指令集和他们的编码、一组编程规范、异常事件处理

     

    4.1.1 程序员可见的状态

     

     

    4.1.2 Y86-64指令 

    1.Y86-64 vs x86-64

    Y86-64指令集是x86-64的子集,只包含8字节(q)操作

    前者简单,后者紧凑(常数值编码灵活、字段不固定)

    2.Y86-64指令

    (1)movq指令:irmovq,rrmovq,mrmovq,rmmovq(格式为: 源+目的+movq,源和目的包括i(instant number),r(register),m(memory);注意,不允许immovq或mmmovq)

    (2)4个整数操作:addq,subq,andq,xorq(注意,只对寄存器操作,同时设置条件码ZF、SF、OF)

    (3)7个跳转指令:jmp,jle,jl,je,jne,jge,jg

    (4)6个条件传送指令:cmovle,cmovl,cmove,cmovne,cmovge,cmovg(注意:只能寄存器->寄存器)

    (5)call,ret

    (6)pushq,popq

    (7)halt指令:停止指令的执行,并设置状态码Stat为HLT

    注:目的地址Dest为8字节常数,使用绝对寻址(注意小端法)

     

    4.1.3 指令编码

    1.指令的字节级编码

    (1)指令类型——第一个字节:高4位是代码部分code(0x0~0xB),低4位是功能部分function(见图4-3)

    (2)寄存器指示符字节register specifier byte——第二个字节/无:存放寄存器标识符(register ID)——15个寄存器(0x0~0xE)、无寄存器(0xF)(见图4-4)

    (3)常数字constant word——8字节:立即数V、地址指示符的偏移量D、目的地址Dest(见图4-3)

     

    例:指令rmmovq %rsp, 0x123456789abcd(%rdx)的字节编码为4042cdab896745230100.

    2.指令集重要性质:无二义性

    3.CISC(复杂指令集计算机=x86-64)指令集 vs RISC(精简指令集计算机)

    Y86-64 = CISC(x86-64)的采用 + RISC的简化

     

    4.1.4 Y86-64异常——状态码Stat

    遇到异常时更完整的处理:处理器调用异常处理程序(exception handler)(详见第8章)

     

    4.1.5 Y86-64程序

    YAS汇编器,YIS指令集模拟器

     

    4.1.6 一些Y86-64指令的详情

    x86-64处理器上:pushq %rsp总是压入%rsp的原始值,popq %rsp总是弹出%rsp的原始值.

     

     

     

    4.2 逻辑设计和硬件控制语言HCL

    硬件控制语言HCL(Hardware Control Language)

     

    4.2.1 逻辑门

    1.逻辑门:数字电路的基本计算单元

    2.AND - &&, OR - ||, NOT - !

     

    4.2.2 组合电路和HCL布尔表达式

    4.2.3 字级的组合电路和HCL整数表达式

    1.组合电路combinational circuits:很多逻辑门组合成一个网所构建的计算块(computational block)

    2.简单的组合电路例子

    (1)单个位的相等检测电路

    HCL表达式:bool eq = (a && b) || (!a && !b);

    (2)单个位的多路复用器(multiplexor)电路

    HCL表达式:bool out = (s && a) || (!s && b);

    (3)字级相等检测电路

    HCL表达式:bool Eq = (A == B);

     

    (4)字级多路复用器电路

    HCL表达式:  

    word Out = [

      s: A; //case (s==1): Out = A;

      1: B; //default: Out = B;

    ];

    (5)四路复用器

    HCL表达式:

    word Out4 = [

      !s1 && !s0 : A; # 00
      !s1        : B; # 01
      !s0        : C; # 10
      1          : D; # 11

    ];

    (6)找最小值

    HCL语言:

    word Min3 = [

      A <= B && A <= C : A;

      B <= A && B <= C : B;

      1                : C;

    ];

    3.算术/逻辑单元(ALU)

     

    4.2.4 集合关系

    1.判断集合关系的通用格式:iexpr in {iexpr1, iexpr2, ..., iexprk}

    其中,被测试的值iexpr和待匹配的值iexpri都是整数表达式.

    4.2.5 储存器和时钟

    1.时序电路(sequential circuit):有状态并且在这个状态上进行计算的系统

    2.时钟:周期性信号,决定什么时候把新值加载到存储设备当中

    3.存储设备:按位存储信息的设备

    (1)时钟寄存器/寄存器:存储单个位或字

    (2)随机访问存储器/内存:存储多个字,用地址来选择该读或该写哪个字

      i. 处理器的虚拟内存系统

      ii.寄存器文件:寄存器标识符作为地址(硬件寄存器vs程序寄存器

    4.硬件寄存器和时钟

    “大多数时候,寄存器都保持在稳定状态(用 x 表示),产生的输出等于它的当前状态。信号沿着寄存器前面的组合逻辑传播,这时,产生了一个新的寄存器输人(用 y 表示),但只要时钟是低电位的,寄存器的输出就仍然保持不变。当时钟变成高电位的时候,输人信号就加载到寄存器中,成为下一个状态 yÿ 直到下一个时钟上升沿,这个状态就一直是寄存器的新输出。”

    Y86-64 处理器会用时钟寄存器保存程序计数器(PC)ÿ 条件代码(CC)和程序状态(Stat)

     

    5.寄存器文件

    两个读端口(A和B), 一个写端口(W)

  • 相关阅读:
    跨域资源共享 CORS 详解
    Vue.js 与 Laravel 分离
    Laravel 5.4+Vue.js 初体验:Laravel下配置运行Vue.js
    移动端web及app设计尺寸
    另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新
    vue2.0 keep-alive最佳实践
    教你用Cordova打包Vue项目
    oracle_数据处理
    oracle_集合函数
    oaracel 函数_行转列
  • 原文地址:https://www.cnblogs.com/tanshiyin-20001111/p/11669661.html
Copyright © 2011-2022 走看看