logo资料库

计算机系统要素++从零开始构建现代计算机.pdf

第1页 / 共345页
第2页 / 共345页
第3页 / 共345页
第4页 / 共345页
第5页 / 共345页
第6页 / 共345页
第7页 / 共345页
第8页 / 共345页
资料共345页,剩余部分请下载后查看
封面
书名
版权
前言
目录
介绍:Hello,World Below
第1章 布尔逻辑
1.1 背景知识
1.1.1 布尔代数
1.1.2 门逻辑
1.1.3 实际硬件结构
1.1.4 硬件描述语言(HDL)
1.1.5 硬件仿真
1.2 规范详述
1.2.1 Nand门
1.2.2 基本逻辑门
1.2.3 多位基本门
1.2.4 多通道逻辑门
1.3 实现
1.4 观点
1.5 项目
第2章 布尔运算
2.1 背景知识
2.2 规范详述
2.2.1 加法器
2.2.2 算术逻辑单元(ALU)
2.3 实现
2.4 观点
2.5 项目
第3章 时序逻辑
3.1 背景知识
3.2 规范详述
3.2.1 D触发器
3.2.2 寄存器
3.2.3 存储
3.2.4 计数器
3.3 实现
3.4 观点
3.5 项目
第4章 机器语言
4.1 背景知识
4.1.1 机器
4.1.2 语言
4.1.3 命令
4.2 Hack机器语言规范详述
4.2.1 概述
4.2.2 A-指令
4.2.3 C-指令
4.2.4 符号
4.2.5 输入/输出处理
4.2.6 语法规约和文件格式
4.3 观点
4.4 项目
第5章 计算机体系结构
5.1 背景知识
5.1.1 存储程序概念
5.1.2 冯·诺依曼结构
5.1.3 内存
5.1.4 中央处理器
5.1.5 寄存器
5.1.6 输入和输出
5.2 Hack硬件平台规范详述
5.2.1 概述
5.2.2 中央处理器(CPU)
5.2.3 指令内存
5.2.4 数据内存
5.2.5 计算机
5.3 实现
5.3.1 中央处理器
5.3.2 内存
5.3.3 计算机
5.4 观点
5.5 项目
第6章 汇编编译器
6.1 背景知识
6.2 Hack汇编到二进制的翻译规范详述
6.2.1 语法规约和文件格式
6.2.2 指令
6.2.3 符号
6.2.4 范例
6.3 实现
6.3.1 Parser模块
6.3.2 Code模块
6.3.3 无符号程序的汇编编译器
6.3.4 SymbolTable模块
6.3.5 有符号程序的汇编编译器
6.4 观点
6.5 项目
第7章 虚拟机Ⅰ:堆栈运算
7.1 背景知识
7.1.1 虚拟机范型
7.1.2 堆栈机模型
7.2 VM规范详述,第Ⅰ部分
7.2.1 概论
7.2.2 算术命令和逻辑命令
7.2.3 内存访问命令
7.2.4 程序流程控制命令和函数调用命令
7.2.5 Jack-VM-Hack平台中的程序元素
7.2.6 VM编程实例
7.3 实现
7.3.1 Hack平台上的标准VM映射,第Ⅰ部分
7.3.2 关于VM设计实现的建议
7.3.3 程序结构
7.4 观点
7.5 项目
第8章 虚拟机Ⅱ:程序控制
8.1 背景知识
8.1.1 程序控制流
8.1.2 子程序调用
8.2 VM规范详述,第Ⅱ部分
8.2.1 程序控制流命令
8.2.2 函数调用命令
8.2.3 函数调用协议
8.2.4 初始化
8.3 实现
8.3.1 Hack平台上的标准VM映射,第Ⅱ部分
8.3.2 范例
8.3.3 VM实现的设计建议
8.4 观点
8.5 项目
第9章 高级语言
9.1 背景知识
9.1.1 范例1:Hello World
9.1.2 范例2:过程化编程和数组处理
9.1.3 范例3:抽象数据类型
9.1.4 范例4:链表实现
9.2 Jack语言规范详述
9.2.1 语法要素
9.2.2 程序结构
9.2.3 变量
9.2.4 语句
9.2.5 表达式
9.2.6 子程序调用
9.2.7 Jack标准库
9.3 编写Jack应用程序
9.4 观点
9.5 项目
第10章 编译器Ⅰ:语法分析
10.1 背景知识
10.1.1 词法分析
10.1.2 语法
10.1.3 语法分析(Parsing)
10.2 规范详述
10.2.1 Jack语言语法
10.2.2 Jack语言的语法分析器
10.2.3 语法分析器的输入
10.2.4 语法分析器的输出
10.3 实现
10.3.1 JackAnalyzer模块
10.3.2 JackTokenizer模块
10.3.3 CompilationEngine模块
10.4 观点
10.5 项目
第11章 编译器Ⅱ:代码生成
11.1 背景知识
11.1.1 数据翻译
11.1.2 命令翻译
11.2 规范详述
11.2.1 虚拟机平台之上的标准映射
11.2.2 编译过程举例
11.3 实现
11.3.1 JackCompiler模块
11.3.2 JackTokenizer模块
11.3.3 SymbolTabel模块
11.3.4 VMWriter模块
11.3.5 CompilationEngine模块
11.4 观点
11.5 项目
第12章 操作系统
12.1 背景知识
12.1.1 数学操作
12.1.2 数字的字符串表示
12.1.3 内存管理
12.1.4 变长数组和字符串
12.1.5 输入/输出管理
12.2 Jack OS规范详述
12.2.1 Math
12.2.2 String
12.2.3 Array
12.2.4 Output
12.2.5 Screen
12.2.6 Keyboard
12.2.7 Memory
12.2.8 Sys
12.3 实现
12.3.1 Math
12.3.2 String
12.3.3 Array
12.3.4 Output
12.3.5 Screen
12.3.6 Keyboard
12.3.7 Memory
12.3.8 Sys
12.4 观点
12.5 项目
第13章 后记:发掘更多乐趣
13.1 硬件的实现
13.2 硬件的改进
13.3 高级语言
13.4 优化
13.5 通信
附录A:硬件描述语言(HDL)
A.1 范例
A.2 约定
A.3 将芯片加载到硬件仿真器
A.4 芯片描述头(接口)
A.5 芯片描述体(实现)
A.5.1 单元
A.5.2 管脚和连接
A.5.3 总线
A.6 内置芯片
A.7 时序芯片
A.7.1 时钟
A.7.2 时钟芯片和管脚
A.7.3 反馈环
A.8 芯片操作的可视化
A.9 已经提供的内置芯片与新的内置芯片
附录B:测试脚本语言
B.1 文件的格式和用法
B.2 在硬件仿真器中测试芯片
B.2.1 范例
B.2.2 数据类型和变量
B.2.3 脚本命令
B.2.4 内置芯片的方法和变量
B.2.5 范例
B.2.6 默认脚本
B.3 在CPU仿真器中测试机器语言程序
B.3.1 范例
B.3.2 变量
B.3.3 命令
B.3.4 默认脚本
B.4 在VM仿真器中测试VM程序
B.4.1 范例
B.4.2 变量
B.4.3 命令
B.4.4 默认脚本
索引
W胄壽 _ I I O A D V I 8 W.C O M.C M Broadview lllll|l The Elements of Computing Systems Building a Modern Computer from Firs! Principles 二… 、 Noam Ntsan and Shimon Schocken The Elements of Computing Systems Building a Modern Computer from First Principles 计算机系统要素 从 零 开 始 构 建 现 代 计 算 机 [ 美] N o a m Nisan Shimon Schocken 著 周 维 宋 磊 陈 曦 译 刘 天 田 审 校 參I常孑工ir出姨孙 PUBUSHING HOUSE OF ELECTROfiCS INDUSTRY h t l p / / w w w . p h e i. c o m. c n
Broadview 技 术 凝 聚 实 力 专 业 创 新 出 版 il 算机系统要素 从 零 开 始 构 建 现 代 计 算 机 在 计 算 机 科 学 发 展 的 早 期,硬 件 、 软 件 、 编 译 器 ,以 及 操 作 系 统 之 间 的 交 互 是 非 常 简 单 的,人 们 很 容 易 掌 握 整 个 计 算 机 的 工 作 原 理 。然 而 随 着 计 算 机 技 术 的 日 益 复 杂 这 种 明 晰 性 不 复 存 在 与 其 他 一 些 涵 盖 计 算 机 科 学 某 个 具 体 领 域 知 识 的 书 不 同,本 书 为 读 者 呈 现 的 是 一 幅 完 整 且 严 格 的 应 用 计 算 机 科 学 的 画 卷 , 它 指 导 读 者 构 建 一 个 简 单 , 然 而 功 能 强 大 的 计 算 机 系 统 ■ 事 实 上 ,理 解 计 算 机 工 作 原 理 的 最 好 方 法 就 是 亲 自 动 手 ,从 零 开 始 构 建 计 算 机 系 统 , 本 书 通 过1 2 个 章 节 和 项 目 来 引 领 读 者 从 头 开 始 逐 步 地 构 建 一 个 基 本 的 硬 件 平 台 和 现 代 软 件 层 级 在 这 个 过 程 中 , 读 者 能 够 获 得 实 际 的 关 于 硬 件 体 系 结 构 、 操 作 系 统 、 编 程 语 言 、 编 译 器 、 数 据 结 构 、 算 法 ,以 及 软 件 工 程 的 知 识。 通 过 这 种 构 造 化 的 方 法. 本 书 揭 示 了 计 算 机 科 学 知 识 中 的 一 个 重 要 部 分 ,并 且 论 证 了 其 他 课 程 中 所 介 绍 的 理 论 和 应 用 技 术 是 如 何 融 入 这 幅 画 卷 中 的。 本 书 可 以 作 为 一 个 学 期 或 两 个 学 期 的 课 程 讲 授 基 于 抽 象 实 现 的 桟 式,每 一 章 都 介 绍 一 个 关 键 的 硬 件 或 软 件 抽 象 ,一 种 实 现 方 式 和 一 个 实 际 的 项 目 * 这 个 计 算 机 系 统 可 以 按 照 章 节 介 绍 的 顺 序 来 实 现 , 当 然 这 只 是 一 种 选 择 . 因 为 这 些 项 目 之 间 是 彼 此 独 立 的 . 我 们 可 以 按 照 任 意 的 顺 序 来 实 现 该 系 统 完 成 这 些 项 目 所 必 要 的 计 箅 机 科 学 知 识 在 本 书 中 都 有 介 绍 , 读 者 唯 一 需 要 具 备 的 是 一 些 编 程 经 验 。 本 书 配 套 的 支 持 网 站 提 供 了 书 中 描 述 的 用 于 构 建 所 有 硬 件 和 软 件 系 统 所 必 需 的 工 具 和 资 料 以 及 用 于1 2个 项 目 的2 0 0个 测 试 程 序 , 这 些 项 目 和 系 统 可 以 被 修 改 以 满 足 各 种 教 学 需 要 , 我 们 提 供 的 所 有 软 件 都 是 开 源 的 , Noam Nisan是Hebrew University of Jerusalem计 算 机 科 学 与 工 程 研 究 院 的 教 授 ,Shimon Schocken是 Interdisciplinary Center Herzliya的Efi Arazi计 算 机 科 学 学 院 的IDB教 授 、 院 长 。 封 面 照 片 来 自Dvora Schocken. 1958 网 上 订 购 :第 二 书 店 第 一 服 务 www.dearbook .com. 责 任 编 辑 :周 筠 图书分类:操作系统 上 lllll|l 本 书 贴 有 激 光 防 伪 标 志. 凡 没 有 防 伪 标 志 者 属 盗 版 图 书 。 9 787121 03336 定 价:4 5 . 0 0元
计算机系统要素 从零开始构建现代计算机 The Elements of Computing Systems Building a Modern Computer from First Principles 羊 Noam Nisan * Shimon Schocken 者 周 维 宋 磊 陈 曦 译 刘 天 田 审 校 重孑 :!f 出 M Publishing House of Electronics Industry 北京 BEIJING
本朽通过展现简单但功能强大的计算机系统之构建过程,为读者呈现了一幅完整、严格的计算 机应用科学大图景。本书作者认为,理解计算机工作原理的域好方法就是亲自动手,从零幵始构建 计算机系统。 内容简介 通过 12 个章节和项目来引领读者从久开始,木书逐步地构建一个基本的硬件平台和现代软件阶 居体系。在这个过程中,读者能够获得关于硬件体系结构、操作系统、编程语言、编译器、数据结 构、 算法以及软件工程的详实知识。通过这种逐步构造的方法,本书揭示了计算机科学知i只中的重 要成分,并展示其它课程中所介绍的理论和应用技术如何融入这幅全局大图景当中去。全书基于“先 抽象再实现”的阐述模式,每 -章都介绍 -个关键的硬件或软件抽象,一种实现方式以及一个实际 的项目。完成这些项 R 所必要的计算机科学知识在本书屮都有涵瘢,只要求读者具备程序设计经验。 本书配套的支持网站提供了书中描述的用 P构违所有硬件和软件系统所必蓠的下具和资料. 以及用 P 12 个项目的 200 个测试程序 》 技术爱好者参考和学>Ja 全书内容广泛、涉猎全面, 适合汁算机及相关专业木科生、研究生、技术开发人员、教师以及 2005 Massachusetts Institute of Technology All rights reserved. No part of this book may be reproduced in any form by any electronic or mechanical means (including photocopying, recording, or information storage and retrieval) without permission in writing from the publisher. CHINESE SIMPLIFIED language edition published by PUBLISHING HOUSE OF ELECTRONICS INDUSTRY,Copyright 2006 本书中文简体版专有出版权由 MIT Press 授 T,电子工业出版社,未经许可,不得以任何方式复制 或抄袭本书的任何部分。 版权贸易合同S记号:阁字:01-2006-3844 图书在版编目(CIP) 数据 计算机系统要尜:从零开始构建现代计算机 / ( 美)尼萨 ( Nisan,NJ , ( 美)锡肯(Schocken,S.) 著; 周维,宋磊,陈曦澤. 一北京:电了-工业出版社,2007.2 名原文:The Elements of Computing Systems: Building a Modem Computer from First Principles ISBN 978-7-121-03336-0 .if ... II .①尼…②锡…③周...④宋...⑤陈... IIU十算机系统 IV .TP30 I 屮M版木图书馆 CIP 数据核字(2006 ) 第 125896 号 责 仟 编 辑: 印 刷: 装 订: 出 版 发 行: 开印定 周 筠 北京智力达印刷有限公司 北京中新伟业印刷有限公司 电子工业出版社 北京市海淀区万寿路 173 信箱邮编 100036 787 X 980 1/16 印张:22.25 2007 年 2 月第 1 次印刷 45.00 元 字数:380 T 字 凡所购买电子工业出版社图书冇缺损问题,请向购艾书店调换 ,,若书店售缺,请与本社发行部 联系, 联系电话: (010) 68279077;邮购电话: ( 010) 88254888o 质量投诉请发邮件至 zlts@phei.com.cn 盗版侵权举报请发邮件宁:dbqq@phei.com.cn。 服务热线:(010) 88258888 o
关键术语中英对照表 木书涉及的专业领域较为广泛,在阅读过程中会遇到各个领域的许多专业术语。下表 列出了本书用到的主要术语的英文原文以及对应的中文译文,供读者参考和辨析(本书 i卜: 文中出现的专业术语在必要时都标注了原文,以便于读者参考和使用索引)。 英文术语 中文译法 allocation assembly assembler class class type compiler constant constructor de-allocation dispose field function identifier invoke label method object object-oriented object-based object instance ( 内存 )分配 汇编; 汇编语言 汇编编译器 类 “类” 类型 编译器 常量 构造函数 ( 内存 )去配 清除 域;字段 函数; 功能 标识符 唤起( 执行 ) 标签 方法 对象 面向对象 ( 的 ) 基于对象的 对象实例 § j电文译法 ¥ ( 语法 )分析 ( 语法 ) 分析器 ( 语法 )分析表 语法分析树; 分析树 过程化( 的 ) 引用 子程序 指针 过程 英文术语 parse/ parsing parser parse table parse tree pointer procedure procedural reference subroutine symbol syntax syntax tree syntax analysis syntax analyzer 语法分析器 token tokenize tokenizer type conversion variable 字元转换器 语法分析 类型转换 X3 付T 语法 字元 字元化 语法树 变量 技术编辑尽了最大努力来保持术语中文译文的明确性和限定性,但仍可能难免存在疏 漏之处,欢迎广大读者批评指IH。 计算机系统要素
关键术语译法中英对照表 若您对本书在翻译方面的任何技术议题存在疑问,或对本书的翻译质量有任何意见、 建议和批评,都欢迎您写信给本书的技术编辑 ( fcmgzhou@broadview.com.cn )。博文视点 欢迎并感谢读者指出本书中存在的任何错误,更欢迎大家对博文视点出版的任何图书提出 意见、建议和批评。感谢您对博文视点的支持!祝您读书愉快。 本 书 技 术 编 辑 方 舟 电子邮件地址:fangzhou@broadview.com.cn 2007 年 1 月 计算机系统要素
前言 Preface What I hear, I forget; What I see, I remember; What I do, I understand. 耳听为虚;眼见为实; 实践出真知。 不闻不若闻之, 闻之不若见之,见之不若知之,知之不若行之; 学至于行之而止矣。 ——孔子 ( 公元前 551 ■- 公元前 479 BC ) 过去,凡是计算机专业人员都对计算机的工作原理和工作方式了如指掌。计算机体系 中的硬件、软件、编译器以及操作系统之间的交互既简单又透明,因此要把握计算机系统 大局观并非难事。然而随着现代计算机技术的日趋复杂,这种明晰性不复存在:计算机科 学领域里面大多数基本思想和技术都被隐藏在众多抽象接口以及私有实现的层面之下。这 种复杂性导致了无法避免的结果,即领域专业化;这使得多门计算机科学领域应运而生, 每个领域只涵盖整个学科中的某一个方面。 9 之所以要编写这本书,正是因为本书作者有感于:很多学习计算机科学的学生识木而 不知林,疲于埋头学习程序设计、各种理论以及工程知识,却失去了对计算机系统整体的 把握和理解,未曾停下来欣赏计算机系统大局观的美景。这个大局观为我们展示的是:硬 件系统和软件系统如何经由隐藏的抽象、接口以及基于各种约定的实现所编织起来的网, 从而紧紧地关联在一起。由于没有从表及里地透彻领略这个繁复大局观的魅力,使很多学 生和计算机从业人员产生了不安的感觉,因为他们并没有完全透彻理解和掌握计算机的内 部工作原理。 本书作者相信,理解计算机工作原理的最好方法就是亲自动手,从零开始构建计算机 系统。由此我们提出了如下的概念:描述一种简单但功能较强的计算机系统,让学生从最 基本的逻辑门开始构建其硬件平台和软件层级。要做就要把事情做好。之所以这么说是因 这句话出自荀子《儒效篇》。——审校者 计算机系统要素
XVI 刖 吕 为 ,从头开始构建完整的通用计算机系统是个艰巨的任务。因此,本书不仅阐述如何构建 计算机系统,而且让读者亲自参与实践,了解如何有效地计划和管理大规模硬件/软件幵 发项目。此外, 我们从最原始最基本的构建模块开始,通过递归向上和逻辑推理等手段, 展示如何构建复杂且有用的系统。 范围 Scope 本书通过一系列的硬件和软件实践项目,向读者展示计算机科学知识中的大部分核心 内容。这些实践项目将会为您展示计算机科学中的理论知识和应用技术是如何应用于工程 实践中的。本书涵盖如下主题: ■ 硬 件:逻辑门; 布尔运算; multiplexor ( 多路复用器);触发器 ( flip-flop );寄存器 ( register );RAM 单元;计数器;硬件描述语言( HDL,Hardware Description Language ); 芯片的仿真及测试。 ■ 体 系 架 构:ALU/CPU 的设计与实现;机器代码;汇编语言程序设计:取址模式;I/O 内存映像。 ■ 操 作 系 统:内存管理;数学计算程序库;基本 I/O 驱动程序; 屏幕管理;文件 I/O; 对高级语言的支持。 ■ 程 序 设 计 语 言:基于对象 (object-based ) 的设计和编程模式;抽象数据类型;作用域: 语法和语义;引用(reference ) 机制。 ■ 编 译 器 :词 法 分 析;自 顶 向 下 的 语 法 分 析;符 号 表 (symbol table ) ; 基 于 堆 栈 ( stack-based ) 的虚拟机;代码生成;数组和对象的实现。 ■ 数 据 结 构 和 算 法:堆栈;哈希表;链表;递归;算术算法;几何算法;运行效率。 ■ 软 件 工 程:模块化设计;接口/实现范式;API 设计和文档;主动式测试(即极限编程 理论中的单元测试等);广义的程序设计概念;质量保证体系。 介绍这些主题的目的只有一个:从零开始构建现代计算机系统。这同时也是我们选择 讨论主题时所遵循的原则,即本书集中讨论构建具有完整功能的计算机系统所需要的最小 集合。因此, 该最小集合中包含了很多应用计算机科学中的基本思想。 计算机系统要素
分享到:
收藏