计算机体系结构与软件开发语言

一、什么是计算机

1、什么是计算机

       计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。

       大多数人认为计算机就是我们桌面的电脑,实际上计算机已经深入到我们信息化生活的方方面面。除了大家熟知的个人电脑、服务器和工作站等通用计算机外,像手机、数码相机、数字电视、游戏机、打印机、路由器等设备的核心部件都是计算机,都是计算机体系结构研究的范围。也许此刻你的身上就有好几台计算机。

​ https://www.bilibili.com/video/av79495884/

2、计算机发展历史

       2.1 诞生

       1946年2月14日,由美国军方定制的世界上第一台电子计算机“电子数字积分计算机”(ENIAC Electronic Numerical And Calculator)在美国宾夕法尼亚大学问世了。ENIAC(中文名:埃尼阿克)是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的,这台计算器使用了17840支电子管,大小为80英尺×8英尺,重达28t(吨),功耗为170kW,其运算速度为每秒5000次的加法运算,造价约为487000美元。ENIAC的问世具有划时代的意义,表明电子计算机时代的到来。在以后60多年里,计算机技术以惊人的速度发展,没有任何一门技术的性能价格比能在30年内增长6个数量级。

       2.2 发展

  • 第一代:电子管计算机时代。时间:1946~1958年。这一代计算机的主要逻辑器件是电子管,使用的是机器语言编程,之后又产生了汇编语言。运算速度为每秒几千次到几万次。主要应用范围为科学计算、军事和科学研究。
  • 第二代:晶体管计算机时代。时间:1959~1964年。这一代计算机的主要逻辑器件是晶体管,已经出现了管理程序和FORTRAN等高级编程语言。运算速度为每秒几十万次。主要应用范围为数据处理、自动控制等。
  • 第三代:中小规模集成电路计算机时代。时间:1965~1970年。这一代计算机的主要逻辑器件是中、小规模集成电路,此时已经出现了操作系统、诊断程序和BASIC、PASCAL等高级语言。运算速度为每秒几十万次到几百万次。主要应用范围为科学计算、数据处理、事务管理、工业控制等领域。
  • 第四代:大规模集成电路计算机时代。时间:1971年以后。这一代计算机的主要逻辑器件是大规模和超大规模集成电路以及微处理器芯片,由于运算速度快、存储容量大、计算机技术与网络技术和通信技术相融合,使计算机软件有了突飞猛进的发展,各种操作系统、数据库技术和各种应用软件应运而生。

二、计算机系统组成

​        计算机系统由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。整体结构如下
计算机体系结构与软件开发语言_第1张图片

1、计算机硬件系统

       1.1 冯·诺依曼结构与哈佛结构

       现代计算机都采用存储程序结构,又称为冯·诺依曼结构,是 1945 年匈牙利籍数学家冯·诺依曼受宾夕法尼亚大学研制的 ENIAC 计算机结构的启发提出的,是世界上第一个完整的计算机体系结构。冯·诺依曼结构体系下,计算机由存储器、运算器、控制器、输入设备和输出设备五部分组成,其中运算器和控制器合称为中央处理器(Central Processing Processor,简称CPU)。
计算机体系结构与软件开发语言_第2张图片

       虽然经过了长期的发展,现代计算机系统占据主要地位的仍然是以存储程序和指令驱动执行为主要特点的冯·诺依曼结构。作为冯·诺依曼结构的一个变种,哈佛结构把程序和数据分开存储。控制器使用两条独立的总线读取程序和访问数据,程序空间和数据空间完成分开。在通用计算机领域,由于应用软件的多样性,要求计算机不断地变化所执行的程序内容,并且频繁地对数据与程序占用的存储器资源进行重新分配,使用统一编址可以最大限度地利用资源。但是在嵌入式应用中,系统要执行的任务相对单一,程序一般是固化在硬件里的,同时嵌入式系统对安全性、可靠性的要求更高,哈佛结构独立的程序空间更有利于代码保护。因此,在嵌入式领域,哈佛结构得到了广泛应用。需要指出的是,哈佛结构并没有改变冯·诺依曼结构存储程序和指令驱动执行的本质,它只是冯·诺依曼结构的一个变种,并不是独立于冯·诺依曼结构的一种新型结构。

       1.2 计算机的组成部件

​        按照冯·诺依曼结构,计算机包含五大部分,即运算器、控制器、存储器、输入设备和输出设备。

  • 运算器
           运算器是计算机中负责计算(包括算术计算和逻辑计算等)的部件。运算器包括算术和逻辑
           运算部件(Arithmetic Logic Units,简称 ALU)、移位部件、浮点运算部件(Floating Point Units,简称 FPU)、向量运算部件、寄存器等。
  • 控制器
           ​控制器是计算机中发出控制命令以控制计算机各部件自动、协调地工作的装置。控制器控制指令流和每条指令的执行,内含程序计数器和指令寄存器等。程序计数器存放当前执行指令的地址,指令寄存器存放当前正在执行的指令。
    ​        ​由于控制器和运算器的紧密耦合关系,现代计算机通常把控制器和运算器集成在一起,称为中央处理器,即CPU。随着芯片集成度的不断提高,现代CPU除了含有运算器和控制器外,常常还集成了其他部件,比如高速缓存(Cache)部件、内存控制器等
  • 存储器
    ​        ​存储器存储程序和数据,又称主存储器或内存,一般用动态随机访问存储器(Dynamic Random Access Memory,简称DRAM)实现。CPU可以直接访问它,IO设备也频繁地与它交换数据。存储器的存取速度往往满足不了 CPU 的快速要求,容量也满足不了应用的需要,为此将存储系统分为高速缓存(Cache)、主存储器和辅助存储器三个层次。Cache 存放当前 CPU 最频繁访问的部分主存储器内容,可以采用比 DRAM 速度快但容量小的静态随机访问存储器(Static Random Access Memory,简称 SRAM)实现。数据和指令在 Cache 和主存储器之间的调动由硬件自动完成。为扩大存储器容量, 使用磁盘、磁带、光盘等能存储大量数据的存储器作为辅助存储器。现代计算机中还有少量只读存储器(Read Only Memory,简称 ROM)用来存放引导程序和基本输入输出系统(Basic Input Output System,简称BIOS)等。现代计算机访问内存时采用虚拟地址,操作系统负责维护虚拟地址和物理地址转换的页表,集成在 CPU 中的存储管理部件(Memory Management Unit,简称 MMU)负责把虚拟地址转换为物理地址
    计算机体系结构与软件开发语言_第3张图片
  • 输入/输出设备
    ​        ​输入/输出设备(简称IO设备)实现计算机与外部世界的信息交换。传统的IO设备有键盘、鼠标、打印机和显示器等;新型的 IO 设备能进行语音、图像、影视的输入、输出和手写体文字输入,并支持计算机之间通过网络进行通信。磁盘等辅助存储器在计算机中也当作 IO 设备来管理。

       ​1.3 常见的CPU

​        ​       ​CPU作为计算机硬件系统的核心,接下来我们就详细介绍一下CPU

       ​       ​ 分类标准:指令集ISA

​        ​       ​CPU 灵魂一一指令集架构 (lnstructio Set Architecture, ISA )。
计算机体系结构与软件开发语言_第4张图片
计算机体系结构与软件开发语言_第5张图片
       ​       领域之分:

计算机体系结构与软件开发语言_第6张图片
详情参看:手把手教你设计CPU——RISC-V处理器篇第一章 和 http://www.eepw.com.cn/zhuanlan/190396.html

2、计算机软件系统

       计算机的软件系统是指计算机在运行的各种程序、数据及相关的文档资料。计算机软件系统通常被分为系统软件应用软件两大类。计算机系统软件能保证计算机按照用户的意愿正常运行,为满足用户使用计算机的各种需求,帮助用户管理计算机和维护资源执行用户命令、控制系统调度等任务。软件系统分为两大类,虽然各自的用途不同,但他们的共同点是都存储在计算机存储器中,以某种格式编码书写的程序或数据。

       2.1 系统软件

       系统软件是指担负控制和协调计算机及其外部设备、支持应用软件的开发和运行的一类计算机软件。系统软件一般包括操作系统、语言处理程序、数据库系统和网络管理系统。

       2.2 应用软件

       应用软件是指为特定领域开发、并为特定目的服务的一类软件。应用软件是直接面向用户需要的,它们可以直接帮助用户提高工作质量和效率,甚至可以帮助用户解决某些难题。应用软件一般分为两类:一类是为特定需要开发的实用型软件,如会计核算软件、订景系统、工程预算软件和教育辅助软件等:另一类是为了方便用户使用计算机而提供的一种工具软件,如用于文字处理的Word、用于辅助设计的AutoCAD及用于系统维护的瑞星
杀毒软件等。

三、软件系统开发语言

1、机器语言

       电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。

2、汇编语言

       为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。

汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。

3、高级语言

       从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过努力,1 9 5 4年,第一个完全脱离机器硬件的高级语言—F O RT R A N问世了,4 0多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有F O RT R A N、A L G O L、C O B O L、B A S I C、L I S P、S N O B O L、P L / 1、P a s c a l、C、P R O L O G、A d a**、C + +**、V C、V B、D e l p h i、J AVAGO 等。

  • ​linux©–jvm(C++)-Java应用程序
  • Nginx :c语言
  • redis:C语言
  • mysql:C++语言开发的
  • Tomcat:Java开发的

你可能感兴趣的:(计算机体系结构,计算机网络)