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

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

    本周学习内容

    1.ISA

    1.1 定义

    一个处理器支持的指令和指令的字节级编码就是这个处理器的ISA,包括很多个部分:

    • 指令集
    • 指令集编码
    • 基本数据类型
    • 一组编程规范
    • 寄存器
    • 寻址模式
    • 存储体系
    • 异常事件处理
    • 中断
    • 外部I/O

    不同的处理器家族,例如Intel IA32、IBM/Freescale PowerPC和ARM,都有不同的ISA。


    1.2 作用

    ISA在编译器编写者(CPU软件)和处理器设计人员(CPU硬件)之间提供了一个抽象层:

    处理器设计者:依据ISA来设计处理器

    处理器使用者:依据ISA就知道CPU选用的指令集,就知道自己可以使用哪些指令以及遵循哪些规范

    定义处理器上的软件如何构建,这是ISA的最重要内涵,现代处理器都是支持高级语言编程、操作系统等等特性,ISA要定义出指令集内的指令是如何支撑起C语言里堆栈、过程调用,操作系统里异常、中断,多媒体平台里数字图像处理、3D加速等等。


    2.指令集(Instruction set)

    2.1 定义

    通常会把CPU的扩展指令集称为”CPU的指令集”(因为基本的,类似加减的指令似乎是必须被CPU所支持的指令)。每款CPU在设计时就规定了一系列与其硬件电路相配合的指令集。

    指令集可分为复杂指令集(CISC:sisk)和精简指令集(RISC:risk)两部分,这部分暂不继续讨论了。

    Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。

    2.2 指令

    一条二进制机器指令由:指令码(操作码)+操作数组成。

    操作码用来说明:指令的功能和执行的操作;

    操作数说明:操作所涉及的源和目的数据的位置;

    源:立即数(即指令中包含的常亮)、寄存器、存储器、I/O端口等;


    3.HCL(硬件控制语言)

    HCL(hardware control language,硬件控制语言),编程语言,用来模拟计算机逻辑。

    HCL具有一些硬件硬件描述语言的特性,允许用户描述布尔函数和字级选择操作。另一方面,它缺乏很多在真正的HDL(Hardware Description Language,硬件描述语言)中能找到的特性。例如,声明寄存器和其他存储元素的方法,循环和条件构造,模块定义和实例化的能力,以及位提取和插入操作。

    3.1 基本逻辑设计——逻辑门

    逻辑门是数字电路的基本计算元素,它们产生的输出,等于它们输入位值的某个布尔函数。如下图:

      

    ①、这三个逻辑门和我们前面讲C语言运算符是对应的。但是要注意区别:

    逻辑门只对单个位进行操作,而不是整个字。这很好理解,因为硬件识别的是高低电平。

    ②、逻辑门总是活动的,一旦一个门的输入变化了,在很短的时间内,输出就会相应的变化。

    3.2 高级逻辑设计——组合电路

    上面说的都是单个逻辑门,只能执行很简单的计算,如果遇到稍微复杂点的,就不能计算了,这时候组合电路就出现了。

    将很多逻辑门组合成一个网所构建的计算块称为组合电路。构建这个网有两个限制:

    ①、两个或多个逻辑门的输出不能连在一起。否则它们可能会导致线上的信号矛盾,可能会导致一个不合法的电压或电路故障。

    ②、这个网必须是无环的,也就是在网中不能有路径经过一系列的门而形成一个回路,这样的回路会导致该网络计算的函数有歧义。

    我在网上给了几个非常有用的简单组合电路例子:

    1、== 表达式(单个位)

    上图用HCL来写就是:eq = (a && b) || (!a && !b)。这个表达式的结果分析,只有a 和 b 都为 0 或者都为 1 的时候,输出才为1。而这个对应于我们高级编程语言中的 a == b 表达式。

    2、HCL表达式:(a && s) || (b && !s)

    对于上面电路的结果,我们分析如果s为1,则结果为a,否则结果为b。


    本周学习问题总结

    问题1:HCL表达式和 C语言逻辑表达式的区别

    问题1解决:

    区别有以下三点:

    ①、逻辑门是持续输出的,如果电路的输入变化了,在一定的延迟之后,输出也会相应的变化,而C表达式是在执行到的时候才会求值。

    ②、两者操作的值不同,逻辑门只对值 0 和值 1 进行操作,而C 逻辑表达式允许参数是任意整数,0表示false,其它任意值都表示true。

    ③、C 逻辑表达式存在短路,比如对于a && b这个符号来说,C语言中的规定是如果前者为假,则后者不会再计算。而HCL当中没有这种说法。


    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 20篇 400小时
    第一周 100/100 1/1 5/5
    第二周 100/200 2/3 5/10
    第三周 100/300 2/5 5/15
    第四周 100/400 1/6 5/20
    第六周 100/500 1/7 5/25
    第七周 100/600 1/8 5/30

    代码托管


    参考资料

    深入理解计算机系统(4.2)------逻辑设计和硬件控制语言HCL

    代码驱动的程序设计学习

    体系结构-指令集结构

  • 相关阅读:
    封装成帧、帧定界、帧同步、透明传输(字符计数法、字符串的首尾填充法、零比特填充的首尾标志法、违规编码法)
    计算机网络之数据链路层的基本概念和功能概述
    物理层设备(中继器、集线器)
    计算机网络之传输介质(双绞线、同轴电缆、光纤、无线电缆、微波、激光、红外线)
    计算机网络之编码与调制
    0953. Verifying an Alien Dictionary (E)
    1704. Determine if String Halves Are Alike (E)
    1551. Minimum Operations to Make Array Equal (M)
    0775. Global and Local Inversions (M)
    0622. Design Circular Queue (M)
  • 原文地址:https://www.cnblogs.com/bonsai/p/7788798.html
Copyright © 2011-2022 走看看