赞
踩
- GitHub计算机系统CSAPP课程资源
- 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)
- 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.3-2.4)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.2-3.4)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.5-3.7)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.8-3.10)
- 计算机系统课程 笔记总结 CSAPP第四章 处理器体系结构(4.1-4.3)
- 计算机系统课程 笔记总结 CSAPP第五章 优化程序性能(5.1-5.14)
- 计算机系统课程 笔记总结 CSAPP第六章 存储器层次结构(6.2-6.6)
- 计算机系统课程 笔记总结 CSAPP第七章 链接(7.1-7.13)
- 计算机系统课程 笔记总结 CSAPP第八章 异常控制流(8.0-8.1)
- 计算机系统课程 笔记总结 CSAPP第八章 异常控制流(8.2-8.4)
- 计算机系统课程 笔记总结 CSAPP第九章 虚拟存储器(9.1-9.5)
- 计算机系统课程 笔记总结 CSAPP第九章 虚拟存储器(9.6-9.10)
目录
|
|
|
|
|
|
|
|
|
|
| |
|
| 定义一个指令集体系结构包括定义:
|
|
| |
|
|
|
|
| |
| 指令的层次
|
| |||
|
|
|
ISA指令系统的设计原则
|
|
|
|
|
|
| |
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
| |
|
|
|
寄存器编码:
指令集功能码:
|
|
|
|
|
|
|
|
|
|
| |
|
| ||||
|
|
|
|
| |
|
|
| 当寄存器和内存移动是,内存m是rB |
| |
|
|
|
|
|
|
|
|
|
| 程序员可见的状态码Stat |
|
|
|
|
|
|
|
|
|
|
|
| 通过返回值的类型分类
|
|
|
|
|
|
|
|
| 位相等:bool eq = (a&&b)||(!a&&!b) |
| 字相等:bool Eq = (A == B) |
|
|
|
HCL和C语言区别:
寄存器:时钟上升沿加载输入
随机存取存储器
寄存器文件
|
|
|
|
|
|
| |
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
| |
|
|
|
SEQ各阶段
|
|
|
|
|
|
| |
|
| ||
|
|
|
原则:从不回读
|
|
|
|
|
|
| |
|
| # Determine instruction code int icode = [ imem_error: INOP; 1: imem_icode; ];
# Determine instruction function int ifun = [ imem_error: FNONE; 1: imem_ifun; ];
bool need_regids = icode in { IRRMOVQ, IOPQ, IPUSHQ, IPOPQ, IIRMOVQ, IRMMOVQ, IMRMOVQ };
bool instr_valid = icode in { INOP, IHALT, IRRMOVQ, IIRMOVQ, IRMMOVQ, IMRMOVQ, IOPQ, IJXX, ICALL, IRET, IPUSHQ, IPOPQ };
bool need_valC = icode in { IIRMOVQ, IRMMOVQ, IMRMOVQ, IJXX, ICALL }; | |
|
|
|
译码/写回逻辑
|
|
|
|
|
|
| |
|
| int srcA = [ icode in { IRRMOVQ, IRMMOVQ, IOPQ, IPUSHQ } : rA; icode in { IPOPQ, IRET } : RRSP; 1 : RNONE; # 不需要寄存器 ];
int dstE = [ icode in { IRRMOVQ } && Cnd : rB; icode in { IIRMOVQ, IOPQ} : rB; icode in { IPUSHQ, IPOPQ, ICALL, IRET } : RRSP; 1 : RNONE; # 不写任何寄存器 ];
word srcB = [ icode in { IOPQ, IRMMOVQ, IMRMOVQ } : rB; icode in { IPUSHQ, IPOPQ, ICALL, IRET } : RRSP; 1 : RNONE; # Don't need register ];
int word dstM = [ icode in { IMRMOVQ, IPOPQ } : rA; 1 : RNONE; # Don't write any register ]; | |
|
|
|
执行逻辑
|
|
|
|
|
|
| |
|
| int aluA = [ icode in { IRRMOVQ, IOPQ } : valA; icode in { IIRMOVQ, IRMMOVQ, IMRMOVQ } : valC; icode in { ICALL, IPUSHQ } : -8; icode in { IRET, IPOPQ } : 8; # 其他指令不需要ALU ];
int alufun = [ icode == IOPQ : ifun; 1 : ALUADD; ];
int aluB = [ icode in { IRMMOVQ, IMRMOVQ, IOPQ, ICALL, IPUSHQ, IRET, IPOPQ } : valB; icode in { IRRMOVQ, IIRMOVQ } : 0; # 其他指令不需要ALU ];
bool set_cc = icode in { IOPQ }; | |
|
|
|
访存逻辑
|
|
|
|
|
|
| |
|
| ## 决定指令状态 int Stat = [ imem_error || dmem_error : SADR; !instr_valid: SINS; icode == IHALT : SHLT; 1 : SAOK; ];
int mem_addr = [ icode in { IRMMOVQ, IPUSHQ, ICALL, IMRMOVQ } : valE; icode in { IPOPQ, IRET } : valA; # 其他指令不需要地址 ];
bool mem_read = icode in {IMRMOVQ,IPOPQ,IRET };
bool mem_write = icode in { IRMMOVQ, IPUSHQ, ICALL };
word mem_data = [ # Value from register icode in { IRMMOVQ, IPUSHQ } : valA; # Return PC icode == ICALL : valP; # Default: Don't write anything]; | |
|
|
|
更新PC逻辑
|
|
|
|
|
|
| |
|
| int new_pc = [ icode == ICALL : valC; icode == IJXX && Cnd : valC; icode == IRET : valM; 1 : valP; ]; | |
|
|
|
- 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.1-2.2)
- 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理(2.3-2.4)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.2-3.4)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.5-3.7)
- 计算机系统课程 笔记总结 CSAPP第三章 程序的机器级表示(3.8-3.10)
- 计算机系统课程 笔记总结 CSAPP第四章 处理器体系结构(4.1-4.3)
- 计算机系统课程 笔记总结 CSAPP第五章 优化程序性能(5.1-5.14)
- 计算机系统课程 笔记总结 CSAPP第六章 存储器层次结构(6.2-6.6)
- 计算机系统课程 笔记总结 CSAPP第七章 链接(7.1-7.13)
- 计算机系统课程 笔记总结 CSAPP第八章 异常控制流(8.0-8.1)
- 计算机系统课程 笔记总结 CSAPP第八章 异常控制流(8.2-8.4)
- 计算机系统课程 笔记总结 CSAPP第九章 虚拟存储器(9.1-9.5)
- 计算机系统课程 笔记总结 CSAPP第九章 虚拟存储器(9.6-9.10)
- GitHub计算机系统CSAPP课程资源
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。