内容简介:
本书以全新的视角详述了高级微处理器的原理和应用,内容详实,图表丰富。首先从微处理器的基本概念出发,在讲述其设计思想和体系结构的同时,重点介绍它在各种微处理器系统设计中的高级应用。每部分内容既有具体的电路示例,又有完整的设计分析,还包括许多实用的设计技巧。 本书既可作为高等院校计算机专业及相关专业本科生、研究生的经典教材,也可作为微处理器系统设计工程师案头必备的实践参考手册。
内 容 提 要 本书以全新的视角讲述高级微处理器的原理和应用,内容详实,图表丰富。本书从微处理器的基本概念出发,在讲述其设计思想和体系结构的同时,重点介绍它在各种围绕微处理器进行设计的系统中的高级应用,每部分内容既有具体的电路实例,又有完整的设计分析,还包括许多珍贵的设计技巧。 全书共分17章。第1章以非常详尽的篇幅介绍了英特尔公司的16位微处理器8086/8088,包括其体系结构、引脚分布及时序分析。第2章在第1章内容的基础上,继续讲述8086/8088的指令集与汇编命令。第3章继续讲述8086/8088汇编语言程序设计思想,详细讲述了如何设计汇编程序,并给出了大量的程序示例。第4章更进一步讲述了8086/8088的一些专有体系结构特征,并给出相关的程序设计技术。通过阅读这4章内容,读者将对8086/8088从基本概念到编程应用都能得到非常透彻的认识。第5~7章将重点放在外设上。第5章给读者介绍了一些通用的外设,例如,I/O端口、键盘、显示器、ADC、DAC、步进式引擎等,并详细讲述了如何将这些外设和8086/8088进行连接。第6章则介绍了一些专用外设,包括可编程计数器/定时器、可编程中断控制器、键盘/显示控制器以及可编程通信接口8251,同样讲述了其与8086/8088的接口连接和编程技术。第7章则按同样的方式详述了DMA、软盘和CRT控制器及其接口技术。第8章在介绍多处理器体系结构的同时,讲述了可用于构成多处理器系统的数值处理器8087和I/O处理器8089,该章内容主要为后面讲述更高级的微处理器作铺垫。第9~12章依次介绍了80286/80287、80386/80387、80486、80586(即Pentium)、Pentium Pro直到Pentium 4这一系列英特尔微处理器大家庭中的成员,从基本体系结构、指令集到每个微处理器的显著特性,都做了非常详尽的描述。第13章则简单介绍了RISC体系结构这一微处理器研究领域中的重要分支。第14~16章给出了一些围绕微处理器进行设计的较为复杂的应用示例,包括基于微处理器的铝冶炼控制系统、基于微处理器的模式扫描系统和电子称量台的设计。这3个示例是对微处理器实际应用的最好阐述。最后一章,也就是第17章,作者以紧凑的文字讲述了微控制器8051和80196,并给出了一个设计示例。 本书的读者群非常广泛,既是一本适合大学教师和高年级本科生、研究生使用的很好的教学、学习参考书,也是微处理器系统设计工程师案头必备的实践参考手册。本书中的许多编程示例和应用设计示例既可以直接用于课堂教学和练习,也可以直接或间接地用作工程实践的设计参考。 译 者 序 微处理器是计算机系统的心脏,从它诞生的那一天开始,就注定了它要为这个世界带来翻天覆地的变化。如今看来,微处理器已经无处不在,不论是个人计算机还是商用服务器,不论是MP3、PDA还是数字式微波炉,都离不开大大小小的微处理器。然而,深入了解微处理器,包括其基本体系结构、指令集、操作时序,以及为了提高性能而不断集成进去的先进技术和设计理念等,却不是一件容易的事情。从译者在这个领域多年的学习和研究经历来看,微处理器研究领域是一个门槛较高的领域,对其进行全面深入的掌握需要多年的历练和经验的积累。本书的面市,无疑为微处理器设计研究者和爱好者提供了一个很好的途径。本书不仅讲述了关于先进微处理器的基本概念,更以详尽的篇幅给出了其具体应用。理论研究者和工程实践者都能从中受益。可以说,本书既是很好的微处理器教学参考书,也是很好的工程实践参考书。 本书几乎向人们展现了整个英特尔微处理器的发展史。译者在翻译的过程中,感受到的是一种由浅入深、行云流水的心境。从最初的16位微处理器8086/8088开始,一直讲到复杂的高端微处理器Pentium 4,从基本设计思想的形成,到体系结构和指令集的设计,再到信号描述、寻址方式、操作时序这些必须了解的信息;从一款微处理器向另一款微处理器过渡时的需求,到为了提高性能而加入何种先进技术……作者都讲得丝丝入扣。不仅如此,本书的最大特色就是在讲述理论知识的同时,给出了相当多的编程示例和具体应用示例,对于长期从事理论研究的读者来说,本书无疑提供了一条快速进行工程设计的捷径。而对于长期从事工程实践的人来说,又能把本书当作理论基础和参考手册。因而我们相信,任何从事体系结构和微处理器设计领域工作的人们,任何希望能快速、准确地设计基于微处理器的系统的人们,都会从本书的阅读中受益匪浅,这也是我们愿意翻译该书的原因所在。 受益于此书有余,不揣冒昧地为本书的读者们建议一条高效的阅读途径。本书的内容可以分为4个部分,第1部分由第1~4章组成,围绕英特尔公司的16位微处理器8086/8088进行了详尽而全面的讲述。包括体系结构、引脚信号分布及意义、操作时序、指令集定义、汇编指令及汇编程序设计思想及示例,还有其专属的一些特征和编程方法等。俗话说,“万变不离其宗”,英特尔公司后续的先进处理器都是从8086/8088演变而来的。因此可以说,该部分内容是任何从事体系结构和微处理器设计工作的人们不可或缺的基础知识,需要仔细地阅读,认真地领悟。第2部分由第5~7章组成,讲述各种外设。从通用外设到专用外设,再到较复杂的专用外设,都进行了详细的讲述。从事微处理器系统设计工作的人们可以根据自己的研究方向和实践内容有选择性地阅读与工作相关的内容,这部分为工程实践提供了很好的参考。第3部分由第8~13章(包括第17章)组成,一直从80286/80287讲到Pentium 4。这是一个跟随历史前进的历程,读者自会体会其中趣味。第4部分由第14~16章组成,给出了3个基于微处理器进行设计的系统示例。在阅读过程中,你将会发现许多新鲜生动而又非常深刻的东西,会发现许多你本该知道而至今尚未知晓的东西,这也是我们在阅读和翻译该书过程中的切身体会。 严复在《译例言》中提出:“译事三难,信、达、雅”,这也是本书译者力求达到的境界,希望在严谨地讲述科学知识的同时,给读者以美的享受。幸运的是,对本书的译者来说,全书讨论的正是译者们最为熟知的研究领域。这次翻译的前提是对原文的彻底领会,因此不存在任何技术细节会因为译者的生疏而发生扭曲。为了力求尽善尽美,我们仍然结合自己多年的体系结构和微处理器设计的知识和经验,遵从教科书的习惯用法,参考了《英汉计算机词典》、《英汉电子信息与技术词汇》、《英汉电子学名词》等,并请教了该领域的一些专家,力求做到准确无误。对于一些应用示例中不是很明确的术语,我们也参考了很多相关书籍,并从因特网上寻求帮助。对于一些重要的术语,还同时给出了中英文对照文本,以方便读者查阅更多的参考资料。 本书主要由岳虹和张波涛翻译。肖国尊负责本书翻译思想的指导、进度和质量的把控,对本书的翻译和出版做了大量的协调和规范工作,在此予以衷心感谢。 译文虽经多次修改和校正,但是由于译者的水平有限,加之时间仓促,疏漏及不足之外在所难免,我们真诚地希望同行和读者不吝赐教,请将您的反馈信息发送至wkservice@vip.163.com,我们将不胜感激。 岳虹于榕城 第2版序 自从本书的第1版在2000年出版之后,大量的先进微处理器,诸如基于Net Burst 微体系结构的Pentium 4等陆续问世。微处理器体系结构的发展异常迅速,来自不同领域的理工科本科生和大学毕业生对该主题产生了浓厚的兴趣。 本书的第1版在整个印度及国外某些地区,得到了众多学科的教师和学生的广泛关注和使用。我们也收到了大量关于提高本书质量的宝贵建议和意见。这些建议以及我们自身对本书的评价,形成了对第一版的内容和表述方式进行修订的主要基础。 在这一版中,我们加入了两章新内容,同时删除了一章。“Pentium 4——21世纪的微处理器”这一章详细介绍了Pentium 4的体系结构,超标量执行、执行Trace Cache、快速执行引擎、流式SIMD扩展等一些新概念也在该章中得到了很好的阐述。随着基于混合CISC-RISC体系结构的微处理器的大量面世,了解RISC处理器的基本特征和设计理念对于学生来说已经变得非常必要。基于该需要,我们加入了全新的篇章“RISC体系结构概述”。而“系统软件和操作系统”这一章则从这一版中删除。不过这章的内容可以通过访问本书的在线学习中心获取。基于读者的需求,我们对余下的章节也进行了适当的修改和重写。 我们希望第2版也和第1版一样,受到读者的青睐。 Ajoy Kumar Ray Kishor M Bhurchandi 第1版序 自1971年英特尔公司第一款4位微处理器4004问世以来,数字系统设计领域内发生的无声变革影响了当代科技进程的方方面面。在过去的28年中,整个世界都见证了微处理器的演变,其对当今科技发展所产生的影响无疑是巨大的。 微处理器的演变归功于半导体工艺技术的飞速发展。第一款微处理器4004仅包含近万个晶体管,在不到10年的时间里,晶体管密度翻了三番。在4004问世后不久,英特尔公司在1972年又推出了第一款8位微处理器8008。不过,由于设计思想本身的缺陷,这两个处理器的应用都不甚成功。1974年,英特尔公司发布了第一款通用8位微处理器8080,其功能也不完善。第一款功能完善的8位CPU 8085诞生于1977年。 8085 CPU至今仍然位居所有8位CPU前列。8085 CPU包含了一个片上时钟产生器、优化的寄存器组和功能相对强大的ALU,从而提供了较高的性能。这些8位微处理器的主要局限在于有限的存储空间、缓慢的执行速度、有限的暂存器、复杂指令集及地址模式的低效性。另一点需要强调的是,8085对流水线以及指令并行的支持差强人意,而这两点对于提高计算速度是非常重要的。例如,8085 CPU中的任何一个指令队列的低效,都会导致取操作码和操作数以及指令的执行以完全串行的方式来进行。 英特尔公司的第一款16位CPU是设计者们为了制造出更强大和更有效的计算机而努力的结果。8086 CPU的设计者们注意到了8位CPU的局限性,他们在8086中设计了一组16位的通用寄存器、一个16位的ALU、丰富的指令集,并且提供了存储地址分段机制。8086中用于寻址某段存储空间的段寄存器组的引入,的确是微处理器演变过程中非常重要的一步。所有的这些特征让这款16位处理器变得更加高效。 IBM公司PC(Personal Computer,个人计算机)的发展始于1980年7月。一年之后,也就是1981年8月,基于英特尔8088处理器(和8086的功能相当,但只支持8位的外部数据总线)的第一台计算机问世,包括一个或两个软驱、一副键盘和一台单色显示器。这台计算机的操作系统是微软公司的MS-DOS操作系统的早期版本。1983年3月,名为PC-XT的IBM PC新版本,拥有了一个10MB的硬盘,一个双面双密度软盘驱动器、一副键盘、一台显示器和一个异步通信适配器。实际上,20世纪80年代IBM公司PC的问世在很大程度上对微处理器的演变产生了巨大的影响;而随着每一代新的微处理器的产生,个人计算机的性能也得到了提高。 8086的主要局限在于它没有存储空间地址分段和保护机制,这一点也被公认是20世纪80年代所有微处理器的共同特征。80286是第一款拥有存储地址分段、特权分配和保护能力的CPU。但是,80286 CPU在最大地址段空间上存在限制(只有64Kb);它的另一个缺陷在于,当将它转换到保护模式下时,就很难再回到正常模式,唯一的方法是重启计算机。 20世纪80年代中期,更多的计算需求催生了更快的CPU的出现。80386是英特尔公司的第一款32位CPU。在80386的设计中,英特尔公司对80286的存储管理能力进行了升级,使其能支持虚拟内存、分页以及提供4种级别的保护方式。并且,80386中的段空间最大可以扩大到4Gb,并最多支持16 384个地址段。80386和它的数学协处理器80387一起,提供了高速的运行环境,80486则将数学协处理器集成到了一起。在集成以后,数学运算的执行速度提升了3倍。并且,8Kb的四路组相连指令Cache和数据Cache第一次出现在80486中,同时出现的还有5级的指令流水线。 早期CPU的指令集设计非常粗糙,因为并没有指望那时候的程序员编出多么大型的机器代码程序。一条高级指令可能会被编译成10条甚至上百条机器代码操作。从早期的8位CPU的演变过程中可以看出, CPU的设计趋势是能够支持更复杂的汇编语言级指令。复杂指令集计算机(Complex Instruction Set Computer,CISC)的设计者很想做到这一点。 从微处理器发展初期开始,设计者们已经努力通过设计更复杂的指令来使其性能更高。但是,这些功能强大的指令以及寻址方式其实很难被程序员用到。而实现这些指令所需的逻辑却占用了微处理器硅片的大部分面积。精简指令集计算机(Reduced Instruction Set Computer,RISC)的设计者们则观察到数据移动类的指令经常会被CPU执行,因此他们对CPU进行优化,从而提高了执行这类指令的速度。RISC提供了规整的指令集,它们具有相同的格式,很容易进行流水操作。为了提高处理器性能,可行的方法如下: (1) 提高处理器时钟频率及系统时钟频率。 (2) 优化和增强指令集。 (3) 在一个时钟周期内执行多条指令,并在CPU的体系结构中实现并行。 第一种方法对CISC处理器和RISC处理器均适用。第二种方法主要适用于CISC,不过对RISC也可行。第三种方法更适用于RISC处理器。从商用RISC CPU的出现开始,关于RISC和CISC性能孰高孰低的争论就没有停止过。RISC体系结构设计者认为RISC指令可以在一个周期内完成,因此比CISC CPU占用更少的时间。这归功于流水线的使用、将指令精简到只有一个简单操作,以及利用编译器将复杂操作合成起来产生代码序列等措施。当RISC机器首次出现在市场上时,CISC处理器每条指令的执行需要6~10个时钟周期,而RISC处理器则可以在一个周期内执行多条简单指令,从而提供了更高的性能。因此之后的CISC处理器借鉴了很多RISC处理器的特征。 本书的编写致力于使其在众多研究的科研与工程分支领域,特别是在电子学、电力学、仪器学、物理和计算机科学等领域,作为大学毕业生和硕士研究生的“高级微处理器”必修课的教科书来使用。本书适合在一个学期之内对高级微处理器的体系结构、编程、硬件接口和应用进行教授。本书的目的是给读者打下良好的微处理器及其原理和实践的基础。我们试图在关于微处理器技术的基本概念和实际应用之间,保持较好的平衡。因此我们致力于做到以下几点: (1) 讲述先进微处理器及其体系结构的基本概念。 (2) 使学生能够编写高效的8086系列微处理器的汇编语言程序。 (3) 使学生掌握微处理器和外设的连接技术,因此可以自行设计及开发完整的基于微处理器的系统。 (4) 以非常清晰的脉络讲述系统编程的基本概念,即操作系统、汇编器、编译器等,使学生能够全面了解微处理器技术,特别是与微处理器相关的软件方面的技术。 (5) 给学生讲述能够提高数据传输速率的策略及技术。 (6) 给出一系列与微处理器有关的趣味应用。 本书的一些显著特色列举如下。 (1) 本书涵盖了从16位8086处理器到Pentium处理器的所有处理器。读者在逐章阅读时,能够清晰地看到处理器从一种体系结构到另一种体系结构的演变。每种微处理器都使用一个独立的章节进行详细描述。第1章相当详细地介绍了8086/8088体系结构。第9章讲述80286及其协处理器。第10章介绍80386微处理器及其协处理器80387。第10章也用很大的篇幅讲述了80486,包括其集成CPU和内嵌的数学协处理器。英特尔公司微处理器系列中的最新款处理器Pentium也在第11章中进行了简单的介绍。 (2) 本书的一个显著特色在于给出了很多有趣的微处理器应用。每种应用在本书中都能得到充分的阐述。第13章就给出了对铝冶炼过程进行控制的微处理器应用。第14章则给出了另一个有趣的应用,即模式扫描器设计。基于微处理器的电子称量台的设计,则在第15章中进行了详细讲述。 (3) 编写汇编程序是学生们遇到的主要难题之一。本书给出了大量的汇编语言程序,让学生能够编写16位平台或32位平台上的有效程序。第2章给出了8086系列处理器的指令集和汇编器指令,以及一些示例。第3章详细讲述了8086汇编语言编程技巧,并给出了大量示例。第4章则详细讨论了涉及到堆栈、子例程、中断、宏和时间延迟等概念的高级汇编语言程序设计技术。 (4) 一些通用的外设,如,I/O端口、键盘、显示器、ADC、DAC、步进式引擎等,在第5章中进行了详细的阐述。 (5) 一些特殊的外设,例如,中断控制器、DMA控制器、CRT控制器、软盘控制器等,则在第6章和第7章中进行了详细讨论,并给出了和微处理器进行连接的示例及程序。这些外设的详细信息对于将它们和高级CPU进行连接以及设计独立的基于微处理器的系统来说,显得非常重要。 (6) 通常,学生希望找到一本单独讲述系统程序概念的教科书。在本书中,有一个完整的篇章(第12章),用于讲述汇编器、加载程序、链接器、编译器及操作系统的概念。对于系统程序概念进行了解,对完整了解微处理器系统将起到非常重要的作用。 (7) 在当今世界,基于多处理器的系统设计其重要性不可小觑。本书也用一个完整的篇章(第8章),对有关多处理器系统设计的问题进行了讲述。诸如8087、8089之类的协处理器及其接口技术也在本书中进行了介绍。同时,在第8章中用很大的篇幅介绍了基于8088的多处理器系统设计及其示例。 (8) 在当今工业中,微控制器应用非常广泛。本书中关于微控制器的章节为学生提供了了解微控制器的途径。英特尔公司的8位微控制器8051和16位微控制器80196,以及基于8031的应用设计示例,在本书的第16章中进行了详尽的介绍。 总地来说,本书致力于为读者全面了解高级微处理器提供最充分的支持。 Ajoy Kumar Ray Kishor M Bhurchandi