chili 默默学编程

《计算机系统要素》1 - 3


这本书

计算机系统要素 - 豆瓣读书


内容组织结构:构建或整合某一组芯片。
- 背景知识
- 规范描述
- 实现
- 观点
- 项目

架构(图 1)

--- --- --- --- --- --- --- 1 布尔逻辑
    1、布尔逻辑
    布尔门芯片,是对布尔函数的实现

    1.1 背景知识

    1.1.1布尔代数

    布尔函数的描述方式:
    - 真值表表示法(穷举所有的 key - value)
    - 布尔表达式: 用布尔算子表示,如 f(x, y, z) = (x + y) · !z

    布尔算子:
    - and (·), or (+), not (!)

    规范表示法:每个布尔函数都至少由一个布尔表达式来描述,称之为规范表示法。

    从真值表表示法到布尔表达式:(任何的布尔函数都可以被三个算子表达)
    - 关注函数值为 1 的行
    - 将这一行转化成变量与的形式,如 xyz,如果变量为 0 ,则去反
    - 将各行的表达式加起来

    n 个变量可以组合出 2^2^n 个函数
    - n 个变量可以有 2^n 种输入,每个输出都有两种可能,所以共有 2^2^n 可能的函数

    2 input 函数(图 2)
    其中 Nand 和 Nor 函数的特点:and/or/not 算子可以由 Nand 或者 Nor 实现
    所以,只要实现了 Nand 就可以实现所有的布尔函数
    x Nand y = not (x and y)
    - x and y = (x Nand y) Nand (x Nand y)
    - x or y = (x Nand x) Nand (y Nand y)
    - not x = x Nand x

    1.1.2 门逻辑
    门(gate) 是用来实现布尔函数的物理设备
    如果布尔函数 f 有 n 个输入变量,返回 m 个二进制结果(前面的例子 m = 1),那么用来实现函数 f 的门将有 n 个输入管脚和 m 个输出管脚
    物理实现,多用电学表示,但是其他的也行。(图 3)
    逻辑门的符号表示(图 4)
    组合1。(图 5)
    组合2。(图 6)
    组合的设计原则:尽量少的门来实现。
    逻辑设计的艺术:给定门的描述(外部接口),通过应用已经实现的门,找到有效的方法来实现它。

    1.1.3 实际硬件结构
    举了个在车间制造 xor 的例子
    问题在于耗时,容易产生错误

    1.1.4 HDL(硬件描述语言)
    现代的设计方法,是在计算机上设计和优化芯片结构,使用结构化的建模形式,如硬件描述语言(HDL)。
    设计者通过 HDL 程序描述芯片的结构,该程序将接受严格的测试(虚拟的测试),除了测试正确性,还包括计算速度、功耗、元件总成本等。测试合格后,再进行生产(外包给芯片制造公司)。
    例子:构建 Xor 门。(图 7)

    1.2 规范详述

    1.2.1 Nand 门
    芯片说明(图 8)

    1.2.2 基本逻辑门
    not(图 9)
    and(图 10)
    or(图 11)
    xor(图 12)
    Multiplexor(图 13、图 13-1)选择器(三个输入,其中一个称为选择位,sel,选择另两个输入中的一个作为输出)(f(a, b, sel) = sel * a + not sel * b
    Demultiplexor(图 14、图 14-1)选择输出的通道

    1.2.3 多位基本门(输入 - 输出 pair 是独立的)
    图 15
    图 16

    1.2.4 多通道逻辑门(多位输入之间进行运算)
    图 17
    图 18
    图 19

    1.3 实现
    用 Nand 实现其他的门

    1.4 观点
    忽略效率、速度、功耗、成本的问题。

    1.5 项目
    用 Nand 门实现符合的门
--- --- --- --- --- --- ---

--- --- --- --- --- --- --- 2 布尔运算
    2.1 背景知识
    二进制数字
    对于 32 位机,存储数字 19 :00000000000000000000000000010011

    二进制加法
    两个 n 位数字二进制的加法,可以由三位加法的逻辑门建立(两个计算位,一个进位,进位需要传递到下个两位计算上)

    有符号的二进制数
    n 位二进制系统可以产生 2^n 个数字,将空间分为两个子集,一个表示正数,一个表示负数
    如今几乎所有计算机都采用 2-补码
    图 20、图 21

    2-补码的几个结论
    - 最大数字 2^(n - 1) -1 和 -2^(n -1)
    - 正整数编码首位都是 0
    - 负整数编码首位都是 1
    - 通过 x 的编码获取 -x 的方法 1:所有最右的 0 和最左的 1 不变,其他位取反
    - 通过 x 的编码获取 -x 的方法 2:所有位取反,然后加 1(更简洁的方法)
    - 加法直接加(无论正负数),减法先取反再进行加法

    2.2 规范详述
    2.2.1 加法器
    - 半加器:两位加法
    - 全加器:三位加法
    - 加法器:n 位加法
    - 增量器:对指定的数字加 1

    半加器:图 22
    半加器:图 23
    半加器:图 24
    增量器:图 25

    2.2.2 算术逻辑单元(ALU)
    图 26
    图 27
    解释:
    - out = fi(x, y)
    - x, y 是两个 16 位的输入
    - out 是 16 位的输出
    - fi 是控制函数( 6 个控制位,共 64 种函数):
        - zx:x 置零
        - nx:x 取反
        - zy:y 置零
        - ny:y 取反
        - f:1 则 x or y,0 则 x and y
        - no:1 则 out,0 则 out 取反(即 not)

    输入 6 个控制位的编码(000000),即可生成对应的函数
    即可以开始运算了,所谓运算,就是:接受 inputs,给出 outputs

    2.3 实现
    2.4 观点
    - 软硬件平台的整体功能是由 ALU 和运行在其上的操作系统共同决定的,所以 ALU 实现多少功能,是个性价比问题。
    - 通常的原则是,硬件实现算术和逻辑操作,成本较高,但性能较好
    2.5 项目
--- --- --- --- --- --- ---

--- --- --- --- --- --- --- 3 时序逻辑
    3、时序逻辑
    1、2 章里的组合芯片提供计算函数功能
    记忆单元提供记忆功能,记忆单元由时序芯片组成

    记忆单元的实现过程涉及同步、时钟、反馈回路
    其中大部分能够被封装到 触发器 的底层 时序门 中
    本章以触发器作为基本模块,来构建 二进制单元 寄存器 存储快 计数器

    3.1 背景知识
    - 时钟 Clock:
        - 基于振荡器,在 0 - 1 之间交替变化
        - 两个相邻的上升沿之间的间隙称为 周期
        - 通过硬件电路,时钟信号被传送到计算机平台的每个时序芯片中;

    - 触发器 Flip-Flops:
        - 最基本的时序单元。
        - 数据触发器(data-flip-flop)1 个比特的输入,1 个比特的输出,时钟输入。
        - 数据和时钟的输入使得 DFF 可以实现 out(t) = in(t - 1)
        - 即,将前一个时间的输入,当作当前时间的输出

    - 寄存器 Registers:图 28,图 29
        - out(t) = out(t - 1)
        - 寄存器的基本设计参数是 宽度,即保存比特位的数量,如 16 32 64。此类寄存器的多位容量通常用 字 来表示

    - 内存 Memories:图 30
        - 堆叠寄存器
        - 随机存储内存 RAM(random access memory)
        - 可以相同速度访问任意地址
        - 接受 3 个输入:数据输入、地址输入、加载位

    - 计数器 Counter:
        - 计数器是一种时序芯片,它的状态是整数,每经过一个周期,该整数 +1
        - 典型的 CPU 包括一个程序计数器(program counter),它的输出就是当前程序中下一步要执行的指令地址
        - 计数器可以由 标准的寄存器 与 常数组合逻辑 组合实现
        - 一般来说,计数器必须要配一些附加的功能,如计数置零、加载新的计数值,或者用减操作来取代增操作

    - 时间问题
        - 时序芯片有维持状态、改变状态的能力
        - 离散化

    3.2 规范详述
    - D 触发器(DFFs)
        - 图 31
        - 所有的 DFF 都连接同一个主时钟
        - 在每个时钟周期的起始点,计算机所有的 DFF 的输出都被赋予他们上个周期的输入
        - 在其他时间 DFF 被锁存了(latched)
        - 每秒钟十亿次(依据计算机的时钟频率)
        - DFF 的物理实现很复杂(反馈回路 + 几个基本的逻辑门)
        - 图 32
    - 寄存器(基于 DFFs)

    - 存储块(基于寄存器)
        - n 个 w 位寄存器组成的阵列
        - 配有直接访问电路
        - n 称为尺寸,w 称为宽度
        - 图 33
    - 计数器芯片(基于寄存器)

    3.3 实现
    3.4 观点
    3.5 项目
--- --- --- --- --- --- ---

图1:

Image

图2:

2、所有2-input的布尔函数.png

图3:

Image

图4:

Image

图5:

Image

图6:

Image

图7:

Image

图8:

Image

图9:

Image

图10:

Image

图11:

Image

图12:

Image

图13: 

Image

图13-1: 

Image

图14:

Image

图14-1:

Image

图15: 

Image

图16: 

Image

图17: 

Image

图18:

Image

 图19: 

Image

图20:

图 20.png

图21:

Image

图22: 

Image

图23: 

Image

图24: 

Image

图25:

Image

 图26: 

Image

图27:

Image

 图28:

Image

 图29: 

Image

图30:

Image

图31: 

Image

图32:

Image

 图33: 

Image


reply ( 1 )

test@2018-12-07 10:59:40

现在访问速度提升了好多啊 强 厉害 赞 真棒