前言
<<计算机组成原理>> <<操作系统>> <<计算机网络>> <<数据结构>> 这四门课程是计算机科学与技术专业的重要基础课程, <<计算机组成原理>>是研究计算机硬件在底层是如何互相协调工作的, 深入理解计算机系统的工作机制及其内部结构
计算机的发展
计算机系统=硬件+软件
软件
- 系统软件: 用来管理整个计算机系统的软件, 比如操作系统
- 应用软件: 各种程序
软件的发展
- 早期软件开发(1940-1950):机器代码与汇编语言
特点:最初的软件是直接用机器代码(即二进制代码)编写的。后来,汇编语言作为机器码的符号化替代出现,简化了编程过程。
应用:这些早期软件通常专门用于特定的计算任务,如科学计算和军事应用。 - 高层编程语言的兴起(1950-1960)
特点:随着计算机的普及和应用的扩展,出现了高层次编程语言,如Fortran(1957年)和COBOL(1959年)。这些语言引入了更接近人类语言的语法,使得编写和维护代码变得更加容易。
应用:高层编程语言被广泛应用于科学计算(Fortran)和商业数据处理(COBOL)。 - 操作系统的发展(1960-1970)
特点:操作系统(OS)开始发展,管理计算机硬件资源并提供用户和应用程序之间的接口。最早的操作系统是批处理系统,之后发展出了多任务和多用户操作系统。
代表系统:Unix(1969年),它对后来的操作系统,如Linux和macOS,影响深远。
应用:操作系统使得计算资源管理更加高效,并为应用软件的开发和执行提供了基础平台。 - 软件工程与结构化编程(1970-1980)
特点:随着软件项目的复杂性增加,软件工程作为一门学科开始形成,强调开发过程中系统化的设计和管理。结构化编程技术被引入,以提高代码的可读性和可维护性。
代表语言:C语言(1972年)和Pascal语言(1970年),这些语言支持结构化编程,并成为了许多应用程序和系统软件的开发基础。
应用:这段时期的软件开发方法论推动了更大规模、更复杂的软件系统的开发,如操作系统、数据库管理系统和商业应用软件。 - 图形用户界面(GUI)的发展(1980-1990)
特点:图形用户界面(GUI)的出现,使得计算机更易于普通用户操作,降低了使用计算机的门槛。GUI让用户通过图标、窗口、按钮等图形元素与计算机互动。
代表系统:Apple Macintosh(1984年)和Microsoft Windows(1985年)。
应用:GUI的普及使得计算机从专业工具变成大众消费品,推动了个人计算机的广泛普及。 - 互联网与开源软件(1990-2000)
特点:互联网的兴起改变了软件的开发和分发方式,软件可以通过网络进行更新和协作开发。开源软件运动也在这时期获得了巨大进展。
代表软件:Linux操作系统(1991年),Apache HTTP Server(1995年),以及各种Web浏览器和开源开发工具。
应用:互联网催生了大量新型应用,如电子邮件、网页浏览器和在线服务平台;开源软件推动了技术的普及和创新。 - 现代软件开发(2000-今):移动应用、云计算与人工智能
特点:移动应用的爆炸性增长、云计算的普及以及人工智能和大数据的应用推动了软件开发进入新的高度。软件不仅仅局限于桌面或服务器,而是遍布各类设备和平台。
代表技术:iOS和Android操作系统、云计算平台(如AWS、Azure)、深度学习框架(如TensorFlow、PyTorch)。
应用:现代软件广泛应用于日常生活、商业、医疗、教育、娱乐等各个领域,软件生态系统变得极其丰富和多样化。
硬件
硬件的发展
计算机硬件的发展至今可看作四个历程
- 第一代计算机(1946-1957):电子管时代
特点:使用电子管作为主要的电子元件。这些计算机体积庞大,功耗巨大,且不太可靠。
代表机器:ENIAC(1946年),这是世界上第一台通用电子计算机。
应用:主要用于科学计算和军事应用,如导弹轨迹计算。 - 第二代计算机(1958-1964):晶体管时代
特点:晶体管取代了真空管,使计算机的体积缩小、速度更快、可靠性更高、功耗更低。
代表机器:IBM 7090(1959年),它是基于晶体管的商业计算机。
应用:扩展到商业和金融领域,支持早期的商业数据处理。 - 第三代计算机(1964-1971):中小规模集成电路时代
特点:使用集成电路(IC)技术,将大量晶体管集成到单个芯片中,进一步缩小了计算机的体积,并显著提高了计算能力。
代表机器:IBM System/360(1964年),这是一个标志性系统,引入了兼容性概念,允许不同规模的计算机共享软件。
应用:广泛应用于各类商业、科学和工程计算,计算机开始普及。 - 第四代计算机(1972-今):大型以及超大型集成电路时代
特点:微处理器的发明将中央处理器(CPU)的功能集成到一个芯片上,使得个人计算机成为可能。
代表产品:Intel 4004(1971年),世界上第一个微处理器,以及后来的IBM PC(1981年)。
应用:个人计算机普及到家庭和办公室,计算机网络和互联网的发展使得计算机成为日常生活不可或缺的一部分。
计算机硬件的基本组成
- 输入设备: 将数据转换为机器能够识别的形式
- 输出设备: 将数据转换为人能够识别的形式
- 存储器: 存放数据和程序
- 运算器: 算术运算, 逻辑运算
- 控制器: 控制各个硬件, 使程序运行
早期冯诺依曼结构
早期冯诺依曼结构以运算器为中心, 输入设备和输出设备和储存器之间必须通过运算器进行数据传递
现代计算机结构
现代冯诺依曼结构以存储器为中心, 数据通过存储器进行流动, CPU=运算器+控制器
工作原理
主存储器
- 存储体: 数据存放在存储器, 按地址存储
- MAR寄存器: 存放地址的寄存器, MAR位数反映存储单元的个数
- MDR寄存器: 存放数据的寄存器, MDR位数=存储字长
- 存储单元: 每个存储单元存放一个二进制代码
- 存储字: 存储单元中二进制代码的组合
- 存储字长: 存储单元中二进制代码的位数
- 存储元: 每个存1bit
运算器
- ACC: 累加器, 用来存放操作数或结果
- MQ: 乘商寄存器, 用来存放乘除操作的运算结果和操作数
- X: 通用寄存器, 用来存放操作数
- ALU: 算术逻辑单元, 内部实现算术运算和逻辑运算
控制器
- CU: 控制单元, 分析指令给出控制信号
- IR: 指令寄存器, 存放当前要执行的指令
- PC: 程序计算器, 存放下一个要执行的指令, 能自动++
获取指令和分析指令的过程
无论执行什么程序, 都需要进行获取指令和指令分析
- 将pc指针指向的要执行的指令的地址交给MAR
- 主存储器获取指令和地址, 取出这行指令存放到MDR
- MDR->IR, 分析指令, 操作码交付CU, 地址继续交付MAR