20145205 《信息安全系统设计基础》第6周学习总结

教材学习内容总结

ISA

  • ISA是IndustryStandardArchitecture的缩写ISA插槽是基于ISA总线(IndustrialStandardArchitecture,工业标准结构总线)的扩展插槽,其颜色一般为黑色,比PCI接口插槽要长些,位于主板的最下端。其工作频率为8MHz左右,为16位插槽,最大传输率16MB/sec,可插接显卡,声卡,网卡已及所谓的多功能接口卡等扩展插卡。其缺点是CPU资源占用太高,数据传输带宽太小,是已经被淘汰的插槽接口。
  • ISA是8/16bit的系统总线,最大传输速率仅为8MB/s,但允许多个CPU共享系统资源。由于兼容性好,它在上个世纪80年代是最广泛采用的系统总线,不过它的弱点也是显而易见的,比如传输速率过低、CPU占用率高、占用硬件中断资源等。后来在PC‘98规范中,就开始放弃了ISA总线,而Intel从i810芯片组开始,也不再提供对ISA接口的支持。

Y86指令体系结构

Y86的处理器类似于IA32

  • 有8个程序寄存器,%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp
  • 处理器的每个程序寄存器存储一个字
  • 寄存器%esp被入栈、出栈、调用和返回指令作为栈指针。在其他情况下,寄存器没有固定的含义或固定值。
  • 有三个一位的条件码:ZF,SF,OF,它们保存最近的算术或洛基指令所造成英雄的有关信息。
  • 程序计数器PC存放当前正在执行指令的地址。
  • 状态码stat,它

    Y86指令

    • movl:irmovl、rrmovl、mrmovl、rmmovl,分别显式地指明源和目的地的格式。第一个字母表明源的类型,i(立即数)、r(寄存器)或m(存储器 ),第二个字母代表目的,可以是r或者m。

    1.两个存储器传送指令中的存储器引用方式是简单地基址和偏移量形式,即:
    Imm(Eb) M[Imm+R[Eb]](基址+偏移量)寻址

    2.不允许从一个存储器地址直接传送到另一个存储器地址,也不允许将立即数传送到存储器。

      • OPl(整数操作指令):addl、subl、andl和xorl。只对寄存器数据进行操作,同时还设置条件码。
      • jXX(跳转指令):jmp、jle、jl、je、jne、jge、jg,根据分支指令的类型和条件码的设置来选择分支。
      • cmovXX(条件传送指令):cmovle、cmovl、cmove、cmovne、cmovge和comvg,与寄存器-寄存器传送指令rrmovl一样,但只有当条件码满足所需要的约束时才会更新目的寄存器的值。
      • call和ret:call指令将返回地址入栈,然后跳转到目的地址。ret指令从这样的过程调用中返回。
      • pushl和popl:入栈和出栈。
      • halt:停止指令的执行。

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

逻辑门

1.逻辑门产生的输出,等于它们输入位值的某个布尔函数。

AND &&
OR ||
NOT !
2.逻辑门只对单个位的数进行操作,而不是整个字。
3.逻辑门总是活动的,输入变化输出很快就跟着变化。

组合电路和HCL布尔表达式

1.构建计算块(组合电路)时的限制

    • 两个或多个逻辑门的输出不能连接在一起
    • 必须无环
      2.组合逻辑电路和c语言中逻辑表达式的区别
    • 组合电路的输出会持续响应输入变化,c语言表达式只有在执行过程中被遇到才求值
    • 逻辑门只对0和1操作,c语言表达式中参数可以是任意整数,0是FALSE,不是0的都是TRUE
    • c的逻辑表达式可能被部分求值

Y86的顺序实现

一、将处理组织成阶段
六个基本阶段:

  • 取指:从存储器读取指令字节,地址为程序计数器(PC)的值。指令指示符字节两个四位部分,称为icode(指令代码)和ifun(指令功能)。vaIP(下一条指令的地址)=PC+已取出指令的长度。
  • 译码:从寄存器文件读入最多两个操作数,得到valA和/或valB。
  • 执行:算数逻辑单元(ALU)根据ifun的值执行指令指明的操作,计算存储器引用的有效地址,或者增加或减少栈指针。得到的值称为valE。也可根据条件码执行跳转。
  • 访存:将数据写入存储器,或者从存储器读出数据。读出的值为valM。
  • 写回:将数据写入存储器,或者从存储器读出数据。读出的值为valM。
  • 更新PC:将PC设置成下一条指令的地址。

二、SEQ硬件实现

  • 取指:将程序计数器寄存器作为地址,指令存储器读取指令的字节。PC增加器计算valP,即增加了的程序计数器。
  • 译码:寄存器文件有两个读端口A和B,从这两个端口同时读寄存器的值valA和valB。
  • 执行:根据指令类型将算数/逻辑单元(ALU)用于不同的目的。条件码寄存器有三个条件码位,ALU负责计算条件码的新值,当执行跳转指令时会根据条件码和跳转类型来计算分支信号Cnd。
  • 访存:数据存储器读出或写入一个存储器字。指令和数据存储器访问的是相同的存储器位置,但用于不同的目的。
  • 写回:寄存器文件有两个写端口,E用来写ALU计算出来的值,M用来写从数据存储器中读出来的值。

三、SEQ的时序

    • Y86指令集的计算原则:处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。
      四、SEQ阶段的实现
    • 取指阶段:包括指令存储器硬件单元。
    • 译码和写回阶段:寄存器文件,支持同时进行两个读和两个写,每个端口有一个地址连接(寄存器ID)和一个数据连接(32根线路),既可以作为寄存器文件的输出字,又可以作为他的输入字。
    • 执行阶段:算数逻辑单元(ALU),输出为valE信号。
    • 访存阶段:读或者写程序数据,两个控制块产生存储器地址和存储器输入数据的值。另外两个块产生控制信号表明应该执行读还是写操作。当执行读操作时,数据存储器产生valM。
    • 更新PC阶段:产生程序计数器的新值,依据指令的类型和是否要选择分支,新的PC可能是valC、valM或者valP。

本周代码托管

本周的个人思考问题

在完成本周的任务时,我之前的虚拟机崩溃了,没有了图形界面,开机就是终端模式,所以我重新建立了一个虚拟机,然后安装所需软件,开始了本周的任务。

如同其他同学中的博客所写,我也是在参照了大家的博客后开始任务。

先安装bison和flex词法分析工具,在终端中输入sudo apt-get install bison flex
下载sim解压。地址http://csapp.cs.cmu.edu/public/students.html

找到 Chapter 4: Processor Architecture,点击Source distribution (README)如下图所示,下载后在虚拟机中解压。

之后对于makefile进行修改

然后下载sim

编译 在sim文件夹下右键选择在终端中打开,输入make clean;make

然后在终端中make一下,就可以去查看.yo文件了

其他(感悟、思考等,可选)

本周主要是新建虚拟机的问题,重新装必要的软件,设置git。主要是很多同学写的博客十分详细,让我可以少走弯路,快了不少,而且新建的虚拟机也不卡了。而且也复习了一波hdl的内容,拣了拣之前的学习内容。

练习题

4.1

确定下面的Y86指令序列的字节编码。

irmovl $15,%ebx
rrmovl %ebx,%ecx
loop:
rmmovl %ecx,-3(%ebx)
addl %ebx,%ecx
jmp loop

答案:

irmovl $15,%ebx               ##30f30f000000
rrmovl %ebx,%ecx              ##2031
loop:
rmmovl %ecx,-3(%ebx)          ##4013fdffff
addl %ebx,%ecx                ##6031
jmp loop   

4.8

写出信号xor的HCL表达式,xor就是异或,输入为a和b。信号xor和上面定义的eq有什么关系?

bool xor = (a && !b) || (!a && b)
与bool eq = (!a && !b) || (a && b)的区别为:互补

4.10(3个HCL代码)

写一个电路的HCL代码,对于输入字A,B,C,选择中间值。

int Med3 = [
        A<=B && A>=C :A;
        A<=C && A>=B :A;
        B<=A && B>=C :B;
        B<=C && B>=A :B;
        C<=A && C>=B :C;
        C<=B && C>=A :C;
];

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 24篇 350小时  
第一周 0/0行 1/2 20小时  
第二周 53/53行 1/3 25/45小时  
第三周 130/183行 1/4 30/75小时  
第四周 0/183行 0/4 5/80小时  
第五周 158/341行 1/5 30/110小时  
第六周 84/425行 2/7 30/140小时  

其他(感悟、思考等,可选)

本周我做了很多内容,不知道为啥我的之前的虚拟系统有问题,我查了很多资料依旧无法解决,所以我只好用了最笨的方法来处理这个问题,我重新设置了一个虚拟机这个虚拟机很成功,不但之前的所有问题都有解决,并且连在终端中输入汉字都也解决了,虽然我不清楚这是为什么。
本周的内容其实也不少,知识点很多,并且还接触了一个新的语言HCL,书上的一些地方不是很明了,但是多次阅读加上练习就可以更好的弄清楚为什么。
本次的Y86安装离不开张晓涵同学的博客帮助,里面很详细的讲解了如何完成这些步骤,最后可以进行Y86模拟,也练了很多书上的代码。果然,多看多学习有很大的帮助。

练习题

4.1

确定下面的Y86指令序列的字节编码。.pos 0x100表明这段代码的起始地址应该是0x100

irmovl $15,%ebx
rrmovl %ebx,%ecx
loop:
rmmovl %ecx,-3(%ebx)
addl %ebx,%ecx
jmp loop

答案:

irmovl $15,%ebx               ##30f30f000000
rrmovl %ebx,%ecx              ##2031
loop:
rmmovl %ecx,-3(%ebx)          ##4013fdffff
addl %ebx,%ecx                ##6031
jmp loop   

4.8

写出信号xor的HCL表达式,xor就是异或,输入为a和b。信号xor和上面定义的eq有什么关系?

bool xor = (a && !b) || (!a && b)
与bool eq = (!a && !b) || (a && b)的区别为:互补

4.10(3个HCL代码)

写一个电路的HCL代码,对于输入字A,B,C,选择中间值。

int Med3 = [
        A<=B && A>=C :A;
        A<=C && A>=B :A;
        B<=A && B>=C :B;
        B<=C && B>=A :B;
        C<=A && C>=B :C;
        C<=B && C>=A :C;
];

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 24篇 350小时  
第一周 0/0行 1/2 8小时  
第二周 49/49行 1/3 10/18小时  
第三周 0/49行 2/5 10/28小时  
第四周 0/149行 0/5 0/28小时  
第五周 42/91行 1/6 15/43小时  
第六周 184/275行 1/7 30/73小时  

注释

-深入理解计算机系统,实验楼
-张晓涵博客

时间: 2024-10-28 19:35:01

20145205 《信息安全系统设计基础》第6周学习总结的相关文章

20145216 史婧瑶《信息安全系统设计基础》第一周学习总结

20145216 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 Linux基础 1.ls命令 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略.我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录.其中“-a” 就是选项,改变了显示的内容.如图所示: 2.man命令 man命令可以查看帮助文档,如 man man : 若在shell中输入 man+数字+命令/函数 即可以查到相关的命令和函数:若不加数字,那man命令默认从数字较

20145311 《信息安全系统设计基础》第一周学习总结

20145311 <信息安全系统设计基础>第一周学习总结 教材学习内容总结 常用的部分命令 CTRL+SHIFT+T:新建标签页,编程时有重要应用: ALT+数字N:终端中切换到第N个标签页,编程时有重要应用: Tab:终端中命令补全,当输入某个命令的开头的一部分后,按下Tab键就可以得到提示或者帮助完成: CTRL+C:中断程序运行 Ctrl+D:键盘输入结束或退出终端 Ctrl+S: 暂定当前程序,暂停后按下任意键恢复运行 Ctrl+A: 将光标移至输入行头,相当于Home键 Ctrl+E

20145216史婧瑶《信息安全系统设计基础》第九周学习总结

20145216史婧瑶<信息安全系统设计基础>第九周学习总结 教材内容总结 第十章 系统级I/O 输入/输出(I/O)是在主存和外部设备之间拷贝数据的过程. 第一节 Unix I/O 这一节涉及到操作系统的基本抽象之一--文件.也就是说,所有的I/O设备都被模型化为文件,而所有的输入输出都被当做对相应文件的读/写.相关的执行动作如下: 1.打开文件: 应用程序向内核发出请求→要求内核打开相应的文件→内核返回文件描述符 文件描述符:一个小的非负整数,用来在后续对此文件的所有操作中标识这个文件.有

20145311 《信息安全系统设计基础》第二周学习总结

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分

20145339《信息安全系统设计基础》第一周学习总结

20145339顿珠达杰<信息安全系统设计基础>第一周学习总结 ◆ Linux是一个操作系统.如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 物理机系统上可以通过使用[Ctrl]+[Alt]+[F1]-[F6]进行终端和图形界面切换,在线实验环境中按下[Ctrl]+[Alt]+[F7]来完成切换.普通意义上的 Shell 就是可以接受用户输入命令的程序,Unix/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的

2017-2018-1 20155228 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155228 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 常见的存储技术 RAM 随机访问存储器(Random-Access Memory, RAM)分为两类:静态的和动态的.静态 RAM(SRAM)比动态RAM(DRAM)更快,但也贵得多.SRAM用来作为高速缓存存储 器,既可以在CPU芯片上,也可以在片下.DRAM用来作为主存以及图形系统的帧缓冲 区.典型地,一个桌面系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆 字节. SRAM将每

2017-2018-1 20155332 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155332 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 简单模型中,存储器是一个线性的字节数组.真实模型中,是一个具有不同容量,成本,访问时间的存储层次结构(存储器山) 程序的局部性很重要,对程序性能有很重要的影响. 计算机系统一个基本而持久的思想,如果你理解了系统是如何将数据在存储器层级结构中上下移动,你就可以编写程序,让数据存储在层次结构中较高的地方,从而CPU可以更快的访问到他们. 编写程序实现功能是最简单的,如何让编写的程序拥有最高的性能,例

2017-2018-1 20155227 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155227 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 第六章 随机访问存储器 随机访问存储器分为:静态RAM(SRAM)和动态RAM(DRAM),静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多. (1)静态RAM SRAM将每个位存储在一个双稳态的存储器单元里,每个单元是用一个六晶体管电路来实现的. 属性:它可以无限制地保持在两个不同的电压配置或状态之一.其他任何状态都是不稳定的. 特点:由于SRAM的双稳态特性,只要有电,它就会永

2017-2018-1 20155334 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155334 <信息安全系统设计基础>第九周学习总结 学习目标: 了解常见的存储技术(RAM.ROM.磁盘.固态硬盘等) 理解局部性原理 理解缓存思想 理解局部性原理和缓存思想在存储层次结构中的应用 高速缓存的原理和应用 教材学习内容总结 一.常见的存储技术: 基本的存储技术包括随机存储器(RAM).非易失性存储器(ROM)和磁盘. 1. RAM分静态RAM(SRAM)和动态RAM(DRAM). 2. SRAM快些,主要用做CPU芯片上的高速缓存,也可以用作芯片下的

2017-2018-1 20155331 《信息安全系统设计基础》第九周学习总结

2017-2018-1 20155331 <信息安全系统设计基础>第九周学习总结 教材学习内容总结 存储器层次结构 存储技术 随机访问存储器 随机访问存储器分为:静态的SRAM.动态的DRAM 静态RAM: SRAM的特点:存储器单元具有双稳态特性,只要有电就会永远保持它的值,干扰消除时,电路就会恢复到稳定值. 动态RAM: DRAM的特点:每一位的存储是对一个电容的充电:对干扰非常敏感. 用途:数码照相机和摄像机的传感器 DRAM存储不稳定的应对机制: 存储器系统必须周期性地通过读出,或者重