存储
- 页表虚拟内存管理,将各个进程的虚拟内存空间划分为长度相等的页表,将虚拟地址和物理地址的对应关系组织为页表;通过硬件实现快速的页表转换。TLB(transfer lookaside table)用于记录映射关系
- 对齐访问是指对该数据的访问起始地址是其数据长度的整数倍, 例如访问一个 4 字节数, 其访存地址的低两位都应为 0。
架构
- 北桥 ( North Bridge) 是离 CPU 最近的芯片, 主要负责控制显卡、 内存与 CPU 之间的数据交换, 向上连接处理器, 向下连接南桥。
- 南桥 ( South Bridge) 主要负责硬盘、 键盘以及各种对带宽 要 求 较 低 的 IO 接 口 与 内 存、CPU 之间的数据交换。
- 在内存中分配一个区域专供显示使用, 这个区域称之为帧缓存
总线
总线:数据交换的通道, 有时也包含了软件硬件架构。 比如 PCI 总线、 USB 总线, 它们不仅仅是指主板上的某个接口, 还包含了与之相对应的整套硬件模型、 软件架构。
- 机械层。 接口的外形、 尺寸、 信号排列、 连接线的长度范围等。
- 电气层。 信号描述、 电源电压、 电平标准、 信号质量等。
- 协议层。 信号时序、 握手规范、 命令格式、 出错处理等。
- 架构层。 硬件模型、 软件架构等。
- PCI 总线、 DDR 总线等都是传统的并行总线, 而 USB、SATA、 PCIE 等都是串行总线。PCIE 的接口规范中, 可以使用 x1、 x4、 x8、 x16等不同宽度的接口, 其中, x16 就是采用 16 对串行总线进行数据传输。 多位串行总线与并行总线的根本差别在于, 多位串行总线的每一个数据通道都是相对独立传输的, 它们独立进行编解码, 在接收端恢复数据之后再进行并行数据之间的对齐。
- 片上总线
- 芯片的片上互连总线也形成了一定的标准。 目前业界公开的主流片上互连总线是 ARM 公司的 AMBA 系列总线
- 内存总线
- 内存总线规范是由
JEDEC( Joint Electron Device Engineering Council) 组织制定的, 它包含了一般总线的三个层级:机械层、 电气层和协议层。
- 内存总线规范是由
- 系统总线
- 常用于处理器与桥片的连接, 同时也作为多处理器间的连接以构成多路系统。 QPI ( Quick Path Interconnect ) 接 口 及 在 QPI 之 前 的 FSB( Front Side Bus) , 还有 AMD 处理器所广泛采用的 HT ( HyperTransport) 接口都属于系统总线。
- 设备总线
- PCI ( Peripheral Component Interconnect ) 总线是一种对计算机体系结构连接影响深远的设 备 总 线。 PCIE ( PCI Express) 可 以 被 看 作PCI 总 线 的 升 级 版 本, 兼 容 PCI 软 件 架 构。 PCIE总线被广泛地用作连接设备的通用总线, 在现有计算机系统中已经基本取代了 PCI 的位置。 PCIE 接口在系统中的位置如图 6. 24 所示, 一般与 SATA、USB、 显示等设备接口位于同样层次, 用于扩展外部设备。
启动
处理器的启动过程, 实际上就是一个特定程序的执行过程。 这个程序我们称之为固件, 又称为 BIOS( Basic Input Output System, 基本输入输出系统) 。
数
-
小数点位置约定在固定位置的数称为定点数。小数点位置约定为可以浮动的数称为浮点数。计算机定义了浮点数, 用来表示实数并弥补定点数的不足
- 定点数表示实数:约定小数点的位置。无法表示数学中的实数。
- 浮点数:符号s、 尾数 f 和阶码 e 三个域。 符号用一位二进制码表示, 0 为正, 1 为负
- ( − 1 ) 2 × f × 2 e (-1)^2 \times f \times 2^e (−1)2×f×2e
- 1. 1 2 × 2 4 = ( 1 × 2 0 + 1 × 2 − 1 ) × 2 4 = 1.5 × 16 = 24 1.1_2 \times 2^4=(1 \times 2^0 +1 \times 2^{-1})\times 2^4=1.5 \times 16=24 1.12×24=(1×20+1×2−1)×24=1.5×16=24
- 例子
- 十进制转二进制
- 二进制转十进制
0.1 1 2 = 1 × 2 − 1 + 1 × 2 − 2 = 0.5 + 0.25 = 0.75 0.11_2 = 1\times 2^{-1} + 1 \times 2^{-2}=0.5+0.25=0.75 0.112=1×2−1+1×2−2=0.5+0.25=0.75
-
原码:原码仅在表示浮点数的尾数部分时采用
-
补码:现代计算机中基本都是采用补码来表示整数
-
当同符号数相加或异符号数相减时, 结果的数值就可能会超过该长度编码下可表示的范围, 称之为溢出。
移位
- 逻辑右移和算术右移的区别在于前者从高位移入的是 0, 后者从高位移入的是操作数的符号位。算术右移之所以名字中使用 “ 算术” 这个词, 是因为当用移位操作计算有符号数 (补码表示)。除以 2 的幂次方时, 只有从高位移入符号位才能保证结果的正确。
- 5 位二进制数 11001, 其逻辑左移 2 位的结果是 00100, 逻辑右移 2 位的结果是 00110, 算术右移 2 位的结果是 11110, 循环右移 2 位的结果是 01110。
POSIX
-
( Portable Operating System Interface) 属于早期的操作系统接口标准。由 IEEE 标准委员会所建立的, 主要包含线程管理、线程调度、 同步等原语定义。体现为 C 语言的一套函数库。
-
包括核的数量、 大核还是小核、 同构核还是异构核、 通用核还是专用核等, 访存带宽与峰值计算能力之间的比例决定该多核处理器的通用性。
-
性能建模主要用于设计的早期还没有实际系统阶段, 又可以细分为基于模拟的建模和基于分析的建模。
- 分析建模根据对处理器结构以及程序特性的分析, 用一定的方法建立处理器的性能公式, 然后将体系结构参数及程序特性参数作为输入, 用数学公式计算出处理器的性能信息, 通常使用数学的方法来创建概率模型、 队列模型、 马尔可夫模型或者 Petri 网模型。模拟建模是处理器设计中用得最为广泛的方法, 采用模拟器进行性能建模, 用于预测现有的或
者一个新的系统的性能。 - 模拟器的优点是灵活和开销小, 通常用高级语言编写, 其缺点是需要大量的时间或大量的计算资源来精准地建模一个相对较大和复杂的系统。 通常, 模拟器比真实硬件的速度慢几个数量级, 模拟的结果也会受到人为因素的干扰, 因为模拟器会带来一些非真实的假设。 相对于模拟器而言, 基于实际机器或者原型系统的性能测量方法会更为精准一些。常见的研究用的模拟器有 SimpleScalar、SimOS、 GEM5 等, 各个公司也都开发了自己的模拟器, 如 IBM 公司的 Mambo 和 Turandot 模拟器、 AMD 的 SimNow 等。模拟器使用 C、 C ++ 和 Python 等高级语言开发, 利用这些串行结构化语言的函数或者类来模拟计算机系统部件的功能和行为。 模拟器最直接的方法就是将目标机器的二进制代码中的每一条指令都转换为同样语义的宿主机器的指令, 在宿主机器上执行。 通过将目标机器的每一个寄存器和标识位对应一个变量, 目标机器的所有逻辑操作都可以被间接地翻译为变量的运算和各种各样的简单或者复杂的算法操作, 这样目标机器上程序的所有操作都可以在宿主机器上以
软件模拟的形式复现出来。 这种翻译的方式实现起来比较简单, 被多数模拟器所采用。 在进行微结构级的详细模拟时, 模拟器需要在时钟周期级别上记录每条动态指令的运行结果、 每一级流水线触发器的状态、 内部各种队列的状态以及体系结构寄存器的状态、 内存和 Cache 的行为、 分支预测器的状态等, 其数据量巨大, 从而导致详细模拟运行的速度缓慢。
- 分析建模根据对处理器结构以及程序特性的分析, 用一定的方法建立处理器的性能公式, 然后将体系结构参数及程序特性参数作为输入, 用数学公式计算出处理器的性能信息, 通常使用数学的方法来创建概率模型、 队列模型、 马尔可夫模型或者 Petri 网模型。模拟建模是处理器设计中用得最为广泛的方法, 采用模拟器进行性能建模, 用于预测现有的或
Sparse可不可以用多级cache机制