计算机组成原理天津大学计算机组成原理授课教师:于瑞国、李雪威授课年级:二年级授课学期:每学年第二学期授课专业:计算机专业天津大学计算机科学与技术学院计算机组成原理天津大学课程要求:通过本课程学习,要求学生对计算机的基础知识、计算机各部件的组成、基本工作原理及设计方法有深入的理解,能够运用所学知识解决计算机分析及设计的问题。课程安排:88学时,课内72学时,实验16学时成绩组成:期末考试(卷面成绩)70%,平时成绩(作业(次数、质量)、随堂小测验)10%,实验20%。计算机组成原理天津大学第1章概论计算机组成原理天津大学1.1计算机的发展史•1.1.1第一代到第四代电子数字计算机的简单回顾第一代电子管计算机ENIAC第一代电子数字计算机的典型特征是使用电子管,所以也被称为电子管计算机时代。1946年第一台ENIAC(ElectricalNumericalIntegratorAndComputer,电子数字积分器和计算机,见图1-1)计算机研制成功,标志着电子管计算机时代的开始。计算机组成原理天津大学第二代晶体管计算机TRADIC第二代电子数字计算机的典型特征是使用晶体管,所以也被称为晶体管计算机时代。晶体管计算机时代开始于二十世纪五十年代中期。1955年由贝尔实验室建造的第一台全晶体管计算机TRADIC(TRAnsistorDIgitalComputer),标志着晶体管计算机时代的到来。计算机组成原理天津大学第三代集成电路计算机IBM360第三代电子数字计算机的典型特征是使用集成电路,所以也被称为集成电路计算机时代。集成电路计算机时代开始于二十世纪六十年代中期,所采用的集成电路是小规模或中规模集成电路。IBM公司1964年推出的IBM360系统标志着集成电路计算机时代的开始。计算机组成原理天津大学第四代大规模集成电路计算机IBM370第四代电子数字计算机的典型特征是使用大规模和超大规模集成电路,所以也被称为大规模集成电路计算机时代:大规模集成电路计算机时代开始于二十世纪七十年代初期。IBM公司1970年生产的IBM370系列机以及1971年Intel公司发布的4004微处理器标志着大规模集成电路计算机时代的开始。计算机组成原理天津大学1.1.2第一台通用电子数字计算机诞生的基础和历史背景表1-120世纪40年代初期出现的一些数字计算机的特征名称首次运行时间数制运算机制程序图灵完备ZuseZ3(德国)1941二进制机电用穿孔软片(punchedfilmstock)控制程序是Atanasoff–BerryComputer(美国)1941二进制电子不可编程-专用否Colossus(英国)1944二进制电子通过调整电缆和开关实现程序控制否HarvardMarkI–IBMASCC(美国)1944十进制机电通过24路穿孔纸带实现程序控制(但是没有条件分支)是ENIAC(美国)1946十进制电子通过调整电缆和开关实现程序控制是计算机组成原理天津大学通用电子数字计算机必须具有如下四方面的特征:•用离散符号表示数据:即计算机内部的数据表示使用离散符号,这是区分数字计算机与模拟计算机的重要标志。•完全使用电子运算装置:即计算机内部的所有运算装置完全使用电子的形式,这是区分电子计算机、机电计算机和机械计算机的重要标志。•可以编写程序:即计算机的功能可以通过运行不同的程序而改变,这是区分通用计算机和专用计算机的重要标志。•图灵完备(Turing-complete):即如果一个计算系统能够计算任何图灵可计算问题(Turing-computablefunction)就称为图灵完备。计算机组成原理天津大学简单回顾一下ENIAC诞生前的一系列重要事件:•1834年CharlesBabbage在他所设计的十进制分析机(decimalAnalyticalEngine)中就使用了程序,并把程序存储在穿孔卡片(punchcard)上。•1848年英国数学家GeorgeBoole提出二进制代数(布尔代数Booleanalgebra)为一个世纪之后研究二进制计算机提供了方法。•1906年LeeDeForest在美国发明了电子管,为研究数字电子计算机提供了可能。•1919年WilliamHenryEccles和F.W.Jordan发表了第一个可以作为一位存储器的flip-flopcircuit。•1924年WaltherBothe搭建了一个“与”逻辑门电路。•1936年图灵(AlanTuring)为证明“可计算性”问题,提出了图灵机(Turingmachine)的概念,从理论上证明了制造出通用计算机的可能性。•1941年美国的Atanasoff–BerryComputer(简称ABC)计算机使用电子管进行运算,成为世界上第一台使用电子管进行运算的计算机。•1944年英国的Colossus计算机不仅使用电子管进行运算,而且所使用的电子管数量已经达到2400个。•1946年由JohnW.Mauchly和J.PresperEckert研制的使用了18000个电子管的ENIAC在美国诞生。计算机组成原理天津大学1.1.3推动计算机体系结构发展的重要事件•1.冯·诺伊曼体系结构MCACCI/OC其中:M是存储器(Memory)CA是中央算术单元(CentralArithmeticalunit)CC是中央控制单元(CentralControlunit)I/O是输入和输出设备(Input/Outputdevices)计算机组成原理天津大学•一台计算机有五个部分,即:一个算术逻辑单元,一个控制单元,一个存储器,一些输入/输出设备和在这些部分之间提供数据通路的总线。•这样的计算机按照如下步骤执行:1)以程序计数器的内容为地址,从存储器中取出下一条指令;2)给程序计数器的内容加上这条指令的长度(即这条指令占用几个字,也称为字长);3)控制单元对这条指令译码,控制单元根据译码结果命令计算机的其他部分执行一些操作;指令可以改变程序计数器的内容,以便执行循环操作或分支操作;4)返回第1步。•冯·诺伊曼等人提出的构成计算机的五个基本部分和计算机执行的四个基本步骤,最终形成了“冯·诺伊曼体系结构”。计算机组成原理天津大学•2.中断•纯粹冯·诺伊曼体系结构的计算机是一种完全串行的工作模式,而且程序的执行过程也完全按照事先安排好的顺序执行。•1951年PresperEckert和JohnMauchly在设计UNIVACI计算机时,为了能够使计算机自动处理运算溢出问题,第一次设计并实现了自动处理异常情况的方法。•具体的处理方法是:–在主存的0地址单元存放2条指令;–当计算机系统出现程序员设定的异常情况时(如:运算溢出等),计算机就自动地执行存放在主存0地址单元的指令。–如果在主存的0地址单元放入停机指令,一旦在程序运行过程中出现运算溢出等异常情况,计算机就可以停止运行。如果在主存0地址单元放入转移到异常处理程序入口的指令,一旦在程序运行过程中出现运算溢出等异常情况,计算机就可以转去执行预先设置好的异常处理程序。•这种处理异常情况的方法,就相当于在出现运算溢出等异常情况时,在正常的程序执行顺序中插入另一段处理程序。由于事先根本无法预知何时会出现运算溢出等异常情况,因此也就无法预知插入程序的位置。在无法预知程序插入位置的情况下实现一段程序的插入,正是UNIVACI计算机的一项重要贡献。计算机组成原理天津大学•1954年NBSDYSEAC计算机第一次使用了I/O中断。在NBSDYSEAC中设计了两个程序计数器,一个用于保存主程序的地址,另一个用于保存I/O程序的地址,I/O信号能够使程序在两个程序计数器之间切换,从而实现了在主程序和I/O程序之间的切换。I/O中断的重要意义在于实现了CPU与I/O的并行执行。•1955年UNIVAC1103A计算机中设计了新的中断处理方式。在UNIVAC1103A中只有一个程序计数器,当发生中断时,程序计数器的值被存储到一个固定的存储单元,然后用一个固定的地址更新程序计数器,从而实现了从当前程序到中断处理程序的切换。•1957年IBMStretch计算机把中断、中断向量和条件转移结合在一起,具备了中断源查找和自动执行相应的中断处理程序的能力。计算机组成原理天津大学•3.虚拟存储器•1958年由英国曼彻斯特大学研制的Atlas计算机,第一次使用了虚拟存储器技术,1962年Atlas计算机投入运行。在Atlas计算机中16K字的主存储器由磁心存储器(corestore)构成,96K字的辅存储器由磁鼓存储器(drumstore)构成。Atlas计算机的设计者通过虚拟存储器技术把主存储器和辅存储器集成在一起。虚拟存储器的核心思想就是把当前使用的部分程序放在主存储器中,而把暂时不使用的部分程序放在辅存储器中,但是给程序员的感觉是计算机有很大的主存储器。Atlas计算机的虚拟存储器技术开创了层次结构存储系统的先河,特别是后来出现的高速缓冲存储器(Cachememory)基本上使用的就是虚拟存储器的思想。•磁鼓存储器是一种在二十世纪50年代和60年代广泛使用的计算机存储器形式,磁鼓存储器属于顺序访问存储器,速度相对比较慢。磁心存储器属于随机访问存储器,速度比磁鼓存储器快而且没有运动部件。在计算机的发展过程中,磁心存储器逐步取代了磁鼓存储器。计算机组成原理天津大学•4.指令流水线•1956年IBM公司启动了一个名为Stretch的项目,计划开发出比当时最新的IBM704计算机快100倍的高性能超级计算机系统。指令流水线的概念就是在Stretch项目中提出的,并在IBM7030(Stretch)计算机上实现了指令流水线。第一台IBM7030(Stretch)计算机于1960年提交给美国LosAlamosScientificLaboratory。•指令流水线的基本思想是把指令的执行过程划分成几个不同的阶段,并设法使几条指令分别处于不同的执行阶段,从而提高了处理器的指令吞吐量。一个五段指令流水线的指令执行过程示意如图1-7所示。指令流水线第一次使计算机可以同时处理多条指令,第一次实现了在CPU内部的指令并行执行。计算机组成原理天津大学•图1-7指令流水线指令执行过程示意图(其中IF表示取指,ID表示译码,EX表示执行,MEM表示存储器访问,WB表示寄存器写回)计算机组成原理天津大学1.2计算机系统的基本组成•1.2.1计算机系统的软硬件概念–一个完整的计算机系统应该包括硬件和软件两大部分。–硬件是指构成计算机的所有物理部件的集合,这些部件是由电子元器件、各类光、机电设备、电子线路等构成的有形物体。–软件是指运行、维护、管理及应用计算机所编制的所有程序的总和。–计算机依靠硬件和软件的协同工作完成一个具体任务,两者缺一不可。硬件是计算机系统的物质基础,软件必须在硬件的支持下才能运行。计算机组成原理天津大学•但是仅有硬件的计算机称为“裸机”,裸机是不能工作的。计算机系统必须有软件的支持,才能充分发挥其硬件的各种功能。现代计算机的软件不仅可以充分发挥计算机的硬件功能,提高计算机的工作效率,而且已经发展到能局部模拟人类的思维活动。因此软件的地位和作用在整个计算机系统中越来越重要。而整个计算机系统性能的好坏,则取决于软硬件功能的总和。然而硬件和软件之间又无严格界线。任何由软件实现的功能都可直接由硬件来完成;反过来,任何由硬件实现的功能也可由软件来模拟。将哪些功能由硬件实现,哪些功能由软件实现是由当时的成本、速度、可靠性和预期的修改频率等因素决定的。因此,硬件和软件在逻辑上是等同的。计算机组成原理天津大学1.2.2计算机系统的硬件组成•1.存储程序与冯.诺依曼计算机存储程序是1946年匈牙利籍数学家冯·诺依曼提出的设计电子数字计算机的一些基本思想,概括如下:–由运算器、存储器、控制器、输入设备和输出设备五大部件组成计算机系统,并规定了这五部分的基本功能;–采用二进制形式表示程序和数据;–计算机的工作过程由存储程序控制。即将程序和数据事先放在存储器中,使计算机在工作时能够自动高速地从存储器中取出指令加