计算机系统要素-从零开始构建现代计算机 项目
建议和<<深入理解计算机系统>>这本一起看, 一本自下而上讲述计算机,另一本自上而下讲述计算机.都是非常经典的书籍.
英文术语 | 翻译 |
---|---|
allocation | 内存分配 |
assembly | 汇编 |
class | 类 |
class type | "类"类型 |
compiler | 编译器 |
constant | 常量 |
constructor | 构造函数 |
de-allocation | 内存去配 |
dispose | 清除 |
field | 域;字段 |
identifier | 标识符 |
invoke | 唤起(执行) |
object-oriented | 面向对象 |
object-base | 面向基类 |
object instance | 对象实例 |
parse/parsing | (语法)分析 |
parser | (语法)分析器 |
parser talbe | (语法)分析表 |
parser tree | (语法)分析树 |
pointer | 指针 |
procedure | 过程 |
procedural | 过程化 |
reference | 引用 |
subroutine | 子程序 |
symbol | 符号 |
syntax | 语法 |
syntax tree | 语法树 |
syntax analysis | 语法分析 |
syntax analyzer | 语法分析器 |
token | 字元 |
tokenize | 字元化 |
tokenizer | 字元转化器 |
type conversion | 类型转换 |
variable | 变量 |
-
硬件: 逻辑门;布尔运算;multiplexor(多路复用器);触发器(flip-flop);寄存器(register);RAM 单元;计数器;硬件描述语言(HDL,Hardware Description Language);芯片的仿真及测试.
-
体系架构: ALU/CPU 的设计与实现;机器代码;汇编语言程序设计;取址模式;I/O 内存印象.
-
操作系统: 内存管理;数学计算程序库;基本 I/O 驱动程序;屏幕管理;文件 I/O;对高级语言的支持
-
程序设计语言: 基于对象(object-base)的设计和编程模式;抽象数据类型;作用域;语法和语义;引用(reference)机制.
-
编译器: 词法分析: 自顶向下的语法分析;符号表(symbol table); 基于堆栈(stack-based)的虚拟机;代码生成: 数组和对象的实现.
-
数据结构和算法: 堆栈;哈希表;链表;递归;算术算法;几何算法;运行效率.
-
软件工程: 模块化设计;接口/实现范式;API 设计和文档;自动式测试;广义的程序概念设计;质量保证体系.
- 典型的软件阶层体系
- 高层语言
- 操作系统
- 编译器
- 虚拟机
- 汇编编译器
- 机器语言
- 典型的硬件阶层体系
- 机器语言
- 计算机体系结构
- ALU | 记忆(储存)元素
- 布尔算数 | 时序逻辑
- 布尔逻辑
CHIP ALU {
IN
x[16], y[16], // 16-bit inputs
zx, // zero the x input?
nx, // negate the x input?
zy, // zero the y input?
ny, // negate the y input?
f, // compute out = x + y (if 1) or x & y (if 0)
no; // negate the out output?
OUT
out[16], // 16-bit output
zr, // 1 if (out == 0), 0 otherwise
ng; // 1 if (out < 0), 0 otherwise
PARTS:
Mux16(a=x, b=false, sel=zx, out=xx);
Mux16(a=y, b=false, sel=zy, out=yy);
Not16(in=xx, out=xxx);
Mux16(a=xx, b=xxx, sel=nx, out=xxxx);
Not16(in=yy, out=yyy);
Mux16(a=yy, b=yyy, sel=ny, out=yyyy);
Add16(a=xxxx, b=yyyy, out=xplusy);
And16(a=xxxx, b=yyyy, out=xandy);
Mux16(a=xandy, b=xplusy, sel=f, out=oo);
Not16(in=oo, out=notoo);
Mux16(a=oo, b=notoo, sel=no, out[15]=ng, out[0..7]=part1, out[8..15]=part2, out=out);
Not(in=notzero, out=zr);
Or(a=or1, b=or2, out=notzero);
Or8Way(in=part1, out=or1);
Or8Way(in=part2, out=or2);
}
非常建议先读一下冯诺依曼结构体系论述,这毕竟是整个计算机结构的基石啊
美籍匈牙利数学家冯·诺伊曼于 1946 年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺伊曼体系结构冯·诺伊曼理论的要点是:计算机的数制采用二进制;计算机应该按照程序顺序执行。人们把冯·诺伊曼的这个理论称为冯·诺伊曼体系结构。
PC 程序计数器自增指向下一个地址,把程序当做二进制数据来对待.
从 EDVAC 到当前最先进的计算机都采用的是冯·诺伊曼体系结构。所以冯·诺伊曼是当之无愧的数字计算机之父。
- 采用存储程序方式,指令和数据不加区别混合存储在同一个存储器中,数据和程序在内存中是没有区别的,它们都是内存中的数据,当 EIP 指针指向哪 CPU 就加载那段内存中的数据,如果是不正确的指令格式,CPU 就会发生错误中断. 在现在 CPU 的保护模式中,每个内存段都有其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行).这就变相的指定了哪些内存中存储的是指令哪些是数据), 指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。
- 存储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。
- 指令由操作码和地址组成。操作码指明本指令的操作类型,地址码指明操作数和地址。操作数本身无数据类型的标志,它的数据类型由操作码确定。
- 通过执行指令直接发出控制信号控制计算机的操作。指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。
- 以运算器为中心,I/O 设备与存储器间的数据传送都要经过运算器。
- 数据以二进制表示。