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

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

学习目标

找出全书你认为学得最差的一章,深入重新学习一下,要求(期末占5分):主要学习第四章

  • 总结新的收获
  • 给你的结对学习搭档讲解或请教,并获取反馈
  • 参考上面的学习总结模板,把学习过程通过博客(随笔)发表,博客标题“学号 《信息安全系统设计基础》第十四周学习总结”,博客(随笔)要通过作业提交,截至时间本周日 23:59。

教材学习内容总结

4.1

  • Y86具体包括:8个程序寄存器(上一章说过)、3个1位条件码ZF\SF\OF、程序计数器(PC,存当前正在执行指令的地址)。
  • 程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态(正常还是异常)。
  • 指令编码长度从1个字节到6个字节不等,一条指令含有一个单字节的指令指示符,可能含有一个单字节的寄存器指示符,还可能含有一个四字节的常数字。

Y86指令

  • (1)movl:irmovl、rrmovl、mrmovl、rmmovl,分别显式地指明源和目的地的格式。第一个字母表明源的类型,i(立即数)、r(寄存器)或m(存储器 ),第二个字母代表目的,可以是r或者m。
  • (2)整数操作指令OPl:addl、subl、andl和xorl。只对寄存器数据进行操作,同时还设置条件码。
  • (3)跳转指令jXX:jmp、jle、jl、je、jne、jge、jg,根据分支指令的类型和条件码的设置来选择分支。
  • (4)条件传送指令cmovXX:cmovle、cmovl、cmove、cmovne、cmovge和comvg,与寄存器-寄存器传送指令rrmovl一样,但只有当条件码满足所需要的约束时才会更新目的寄存器的值。
  • (5)call指令将返回地址入栈,然后跳转到目的地址。ret指令从这样的过程调用中返回。
  • (6)pushl和popl:入栈和出栈。
  • (7)halt:停止指令的执行。

1071472-20171223165045303-1812769870.jpg

  • 上图一定要看懂,表明指令类型的第一个字节分为2个4位的部分,段fn指明是某个整数操作(OPL)、数据移动条件(cmovXX)或是分支条件(jXX),所有数值都用十六进制表示

  • 细节部分:a)不允许从存储器地址传存储器地址。b)整数操作命令对象只能为寄存器数据:立即数加寄存器数据必须先把立即数传到寄存器中)

  • 8个程序寄存器中每个都有相应的0~7的寄存器标识符,程序寄存器存在一个寄存器文件中,这个寄存器文件就是一个小的、以寄存器ID作为地址的随机访问存储器。当需要指明不应访问任何寄存器时,用ID值0xF表示。
    1071472-20171223165109850-503410614.jpg

  • 所有整数部分采用小端法编码。

Y86状态码

  • 出现异常时Y86处理器停止运行指令,可以调用一个异常处理程序(配置成不同结果)

  • 保证栈不会增长的太大而覆盖程序的数据。

  • 模拟器只打印在模拟过程中改变的寄存器或存储器中的字,左边原始值,右边最终值。
    pushl指令的两种约定:a)压入/弹出%esp的原始值b)压入/弹出%esp-/+4后的值

4.2
4.2.1讲了与或非,4.2.2用这三个逻辑门组成位级电路,4.2.3多个位级电路组合成字级复合电路,4.2.4判断集合关系的通用格式iexpr in {iexpr1,iexpr2,……,iexprk}后面会用到。
4.2.5

  • 1、存储设备都是由同一个时钟控制,两类存储器设备包括:
    a)时钟寄存器(寄存器):储存单个位或字,用时钟信号控制寄存器加载输入值。
    b)随机访问储存器(储存器):储存多个字,用地址选择该读/写哪个字。
  • 2、硬件和机器级编程中的寄存器有细微差别,分为称为“硬件寄存器”和“程序寄存器”。
  • 3、寄存器文件结构(内含8个程序寄存器):

  • 4、处理器有一个随机访问存储器来存储程序数据。
    4.3
  • SEQ处理器:每一个时钟周期上,SEQ执行处理一条完整指令所需的所有步骤。

  • 将处理组织成阶段
    取址:valP:PC的值加上已取出指令的长度。
    译码:读入指令rA和rB字段指明的寄存器。
    执行:ALU执行指令指明的操作,计算存储器引用的有效地址,要么增加或者减少栈指针,得到的值为valE;对跳转指令来说,这个阶段会检验条件码和分支条件。
    访存:可以将数据写入存储器,或者从存储器读出数据。置为valM。
    写回:最多可以写两个结果到寄存器文件。
    更新:将PC设置成下一条指令的地址。

  • 执行一条指令需要的处理过程

执行指令所表明的操作、计算地址、更新栈指针、确定下一条指令的地址。

  • 对于三种控制转移指令的处理:需要注意位信号Cnd。

在更新PC阶段,检查这个标志,如果这个标志为1,将PC设为valC(跳转目标),如果为0,就设为valP(下一条指令的地址)。

  • SEQ硬件结构

实现所有Y86指令所需要的计算可以组织成6个阶段:取值、译码、执行、访存、写回和更新PC。 在SEQ中,所有硬件单元的处理都在一个时钟周期内完成。

  • SEQ的时序

SEQ的实现包括组合逻辑和两种存储器设备:时钟寄存器(程序计数器和条件码寄存器),随机访问存储器(寄存器文件、指令存储器和数据存储器)。

每个时钟周期,程序计数器都会装在新的指令地址;只有在执行整数运算指令时,才会装载条件码寄存器;只有在执行rmmovl、pushl或call指令时,才会写数据存储器;寄存器文件的两个写端口允许每个时钟周期更新两个程序寄存器。

  • 处理器的原则

处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。

  • SEQ阶段的实现

nop指令:除了将PC加1,不进行任何处理;
halt指令:将处理器状态设置为HLT,导致处理器停止运行。

课后部分作业及实现

  • 确定下面的Y86指令序列的字节编码。".pos 0x100”那一行表明这段目标代码的起始地址应该是Ox100。
    1071472-20171223165730756-1930649887.jpg
  • 答案:这段编码有以下特性值得注意:
    十进制的15(第2行)的十六进制表示为0x0000000f。以反向顺序来写就是0f 00 00 00。
    十进制-3(第5行)的十六进制表示为0xfffffffd。以反向顺序来写就fd ff ff ff。
    代码从地址0x100开始。第一条指令需要6个字节,而第二条需要2个字节。因此,循环的目标地址为0x00000108。以反向顺序来写就是08 01 00 00。
  • 确定下列每个字节序列所编码的Y86指令序列。如果序列中有不合法的字节,指出指令序列中不合法值出现的位置。每个序列都先给出了起始地址,冒号,然后是字节序列。
    1071472-20171223165839834-2021291954.jpg
  • 答案:
    1071472-20171223171213428-1071006702.jpg
    1071472-20171223171228287-145712455.jpg
  • 根据下面的C代码,用Y86代码来实现一个递归求和函数rSumint :
rSum(int *Start, int Count)
{    if  (Count <=0)   
             return 0;   
       return *Start+rSum(Start+1,Count-1)
}
  • 答案:
    1071472-20171223171852990-1122693674.jpg
  • 填写下表的右边一栏,这个表描述的是图4-17中目标代码第7行上的popl指令的处理情况:
    1071472-20171223172655553-140024751.jpg
  • 答案:我们可以看到指令位于地址。0x01c,由两个字节组成,值分别为0xb0和0x08。pushl指令(第6行)将寄存器%esp设为了124,并且将9存放在了这个存储器位置。
    1071472-20171223173111881-409683955.jpg
    该指令将%eax设为9,将%esp设为128,并将PC加20。
  • 根据图4-18~图4-21中执行阶段第一步的第一个操作数,写出SEQ中信号aluB的HCL描述。
  • 答案:
int aluB=[
         icode in { IRMMOVL, IMRMOVL,IOPL,  ICALL,
                                    IPUSHL,IRET,IPOPL}: valB;
         icode in { IRRMOVL, IIRMOVL }:0;
           #Other instructions don't need ALU
];
  • 让我们来看看图4-32中的系统,假设将它划分成任意数量的流水线阶段k,每个阶段有相同的延迟300/k,每个流水线寄存器的延迟为20ps。
    A.系统的延迟和吞吐量写成k}的函数是什么?
    B.吞吐量的上限等于多少?
    1071472-20171224141303162-535723506.jpg
  • 答案:
    每个阶段的组合逻辑都需要300/kps,而流水线寄存器需要20ps。
    A.整个的延迟应该是300 + 20k ps,而吞吐量(以GIPS为单位)应该是
    1000/(300/k+20)=1000k/(300+20k)
    B.当k趋近于无穷大,吞吐量变为1000/20=50 GIPS。当然,这也使得延迟为无穷大。

代码托管

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 其他

本周结对学习情况

- [20155210](博客链接)
- 结对照片
- 结对学习内容
    - XXXX
    - XXXX
    - ...

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

xxx
xxx

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行20篇400小时
第一周5/51/110/10练习hello.c
第三周343/3501/322/56学习信息存储
第五周523 /8731/523/79学习汇编语言
第七周671 /15441/725/104学习Y86
第九周423 /19763/1022/126学习存储技术
第十一周511 /24872/1223/149学习虚拟存储器
第十三周811 / 32892/1428/177重点学习教程第八章
第十四周532 / 38211/1522/199再次学习教程第四章

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

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

转载于:https://www.cnblogs.com/l20155233/p/8093817.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值