zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155308 《信息安全系统设计基础》第7周学习总结

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

    教材学习内容总结

    • 指令集体系结构(ISA):一个处理器支持的指令和指令的字节级编码
    • Y86指令

    只包括四字节整数操作

    1. movl分为irmovl rrmovl mrmovl rmmovl
    2. 整数指令:addl subl andl xorl
    3. 跳转指令:jmp jle jl je jne jge jg
    4. 条件传送指令:cmovle cmovl cmove cmovne cmovge cmovg
    • 逻辑门
    1. AND:&&
    2. OR:||
    3. NOT:!
    • 存储器和时钟
    1. 时序电路:有状态并在这个状态上进行计算的系统

    2. 时钟寄存器:存储单个位或字,时钟信号控制寄存器加载输入值

    3. 随机访问存储器:存储多个字,用地址来选择该读或改写哪个字(处理器的虚拟存储器系统、寄存器文件)

    4. 寄存器作为电路不同部分中的组合逻辑之间的屏障,每当每个时钟到达上升沿的时候,值才会从寄存器的输入传送到输出

    • Y86的顺序实现

    将处理组织成阶段

    1. 取值:从存储器读取指令字节,地址为程序计数器PC的值,icod指令代码、ifun指令功能、valc四字节常数、valp下一条指令的地址=PC值+已取出指令长度
    2. 译码
    3. 执行:算数/逻辑单元要么执行指令指明的操作计算存储器引用的有效地址,要么增加或减少栈指针,得到的值称为valE
    4. 访存
    5. 写回:最多可以写两个结果到寄存器文件
    6. 更新PC:将PC设置成下一条指令地址
    • SEQ硬件结构
    1. 取值:将程序计数器寄存器作为地址,指令存储器读取指令的字节
    2. 译码:两个读端口,读寄存器valA和valB
    3. 执行:根据指令的类型,将算数/逻辑单元用于不同的目的
    4. 访存:数据存储器读出或写入一个存储器字
    • SEQ阶段的实现
    1. 取指:以PC作为第一个字节的地址,这个单元一次从存储器读出6个字节
    2. 译码和写回:两个读和两个写端口,每个端口都有一个地址连接和一个数字连接
    3. 执行:根据alufun信号的设置,对输入的aluA和aluB执行ADD SUBTRACT AND EXCLUSIVE-OR运算,ALU的输出就是valE信号
    4. 访存:读或写程序数据
    5. 更新PC:依据指令的类型和是否要选择分支,新的PC可能是valC、valM或valp

    实验楼实验

    • 创建YIS环境
    1. 创建文件夹并进入

    2. 去网站下载sim压缩包

    3. 解压

    4. 进入sim文件夹并安装bison flex tk

    5. sudo ln -s

    6. make
      /usr/lib/x86_64-linux-gnu/libtk8.6.so /usr/lib/libtcl.so

    • 测试
    1. cd y86-code
    2. make xxx.yo

    教材学习中的问题和解决过程

    • 问题一.教材练习题4.12:写一个电路的HCL代码,对于输入字AB和C,选择中间值,也就是,输出等于三个输入中居于最小值和最大值之间的那个字。
    • 这个问题是一个很简单的问题,当时我在看书的时候,觉得1...:x不是很理解,后来多看了几个例子,感觉这个是一个比较简单的简写。
    word Ned3 = {
        A <= B && B <= C : B;
        C <= B && B <= A : B;
        B <= A && A <= C : A;
        C <= A && A <= B : A;
        1                ;C 
    }
    

    其实等价于

    word Ned3 = {
        A <= B && B <= C : B;
        C <= B && B <= A : B;
        B <= A && A <= C : A;
        C <= A && A <= B : A;
        A <= C && C <= B : C;
        B <= C && C <= A : C;
    }
    

    代码调试中的问题和解决过程

    代码托管

    上周考试错题总结

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

    这周学习了新的处理器环境,感觉在刚接触的时候,不是很习惯,然后觉得看书也不是很能看懂,通过一些习题的练习和实验楼的实验,我感觉稍微有点感觉了,但是还需努力!

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第三周 500/1000 2/11 22/60

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。 参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:25小时
    • 实际学习时间:30小时
    • 改进情况:学习时间有所增长
  • 相关阅读:
    Flutter form 的表单 input
    FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
    Flutter 中的常见的按钮组件 以及自 定义按钮组件
    Drawer 侧边栏、以及侧边栏内 容布局
    AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar
    清空路由 路由替换 返回到根路由
    应对ubuntu linux图形界面卡住的方法
    [转] 一块赚零花钱
    [转]在树莓派上搭建LAMP服务
    ssh保持连接
  • 原文地址:https://www.cnblogs.com/JIUSHA/p/7788941.html
Copyright © 2011-2022 走看看