当前位置: 首页 > article >正文

计算机必读基础书籍

一.计算机组成原理

    这本书利用组合逻辑、同步时序逻辑电路设计的相关知识,从逻辑门开始逐步构建运算器、存储器、数据通路和控制器,最终集成为完整的CU原型系统,使读者从设计者的角度理解计算机部件构成及运行的基本原理,掌握软硬件协同的概念。
    全书共9章,主要内容包括计算机系统概述、数据信息的表示、运算方法与运算器、存储系统、指令系统、中央处理器、指令流水线、总线系统、输入输出系统。

1.计算机系统概述

1.1计算机发展历程

    计算机是一种能够按照事先存储的程序,自动、高速、准确地对相关信息进行处理的电子设备。1946年2月,世界上第一台电子数字计算机ENIAC(Electronic Numerical Integrator AndComputer,电子数字积分计算机)在美国宾夕法尼亚大学诞生,它标志着科学技术的发展进入了新的时代一电子计算机时代。从第一台电子计算机的诞生到现在,这70多年的时间里,计算机的发展经历了以下4个阶段。

  1. 电子管计算机(1946一1958年)
  2. 晶体管计算机(1958一1964年)
  3. 集成电路计算机(1964一1971年)
  4. 超大规模集成电路计算机(1971年至今)

1.2计算机组成

    一台完整的计算机包括硬件和软件两部分,另外还有一部分固化的软件称为固件(Firmware),固件兼具软件和硬件的特性,常见的如个人计算机中的BIOS。硬件与软件结合才能使计算机正常运行并发挥作用。因此,对计算机的理解不能仅局限于硬件部分,应该把它看作一个包含软件系统与硬件系统的完整系统。
    计算机硬件系统是构成计算机系统的电子线路和电子元件等物理设备的总称。硬件是构成计算机的物质基础,是计算机系统的核心。
    20世纪40年代中期,美国科学家冯·诺依曼(on Neumann)大胆地提出了采用二进制作为数字计算机数制基础的理论。相比十进制,二进制的运算规则更简单,“0”和“1”两个状态更容易用物理状态实现,适合采用布尔代数的方法实现运算电路。除此之外,冯·诺依曼还提出了存储程序和程序控制的思想。存储程序就是将解题的步骤编制成程序,然后将程序和运行程序所需要的数据以二进制的形式存放到存储器中,方便执行。而程序控制则是指计算机中的控制器逐条取出存储器中的指令并按顺序执行,控制各功能部件进行相应的操作,完成数据的加工处理。存储程序和程序控制是冯·诺依曼结构计算机的主要设计思想,人们把冯·诺依曼的这些理论称为冯·诺依曼体系结构。
     按照冯·诺依曼的设计思想,计算机的硬件系统包含运算器、控制器、存储器、输入设备和输出设备五大部件。运算器与控制器又合称为中央处理器(Central Processing Unit,.CPU);CPU和存储器通常称为主机(Host);输入设备和输出设备统称为输入输出设备,因为它们位于主机的外部,所以有时也称为外部设备。
    计算机软件将解决问题的思想、方法和过程用程序进行描述,因此,程序是软件的核心组成部分。程序通常存储在存储介质中,人们可以看到存储程序的存储介质,而程序则是无形的。一台计算机中全部程序的集合统称为这台计算机的软件系统。计算机软件按其功能分成应用软件和系统软件两大类。应用软件是用户为解决某种应用问题而编制的一些程序,如科学计算程序、自动控制程序、数据处理程序、情报检索程序等。随着计算机的广泛应用,应用软件的种类及数量越来越多、功能也越来越强大。系统软件用于对计算机系统进行管理、调度、监视和服务等,其目的是方便用户、提高计算机使用效率、扩充系统的功能。通常将系统软件分为以下几类:

  1. 操作系统
  2. 程序 设计语言及语言处理程序(程序设计语言分为三类机器语言 ,汇编语言,高级语言)
  3. 数据库管理系统
  4. 应用程序

1.3系统层次结构

在这里插入图片描述
    第6层是高级语言层,是面向用户的抽象层次。用户使用与机器无关的高级语言编程,编程过程中不需要知道机器的技术细节,只需掌握高级语言的语法规则、算法和数据结构等就可以编程。高级语言大大降低了学习和使用计算机的难度,便于计算机的应用与推广。
    第5层是汇编语言层。该层为用户提供基于助记符表示的汇编语言编程。汇编语言与机器结构直接相关,用户必须在了解机器内部的详细技术细节(如寄存器、寻址方式等)后才能编程。本层的编程难度比高级语言层难度大。
    第4层是操作系统层。该层用于对计算机系统的硬件和软件资源进行统一管理和调度,提高计算机系统的使用效率,方便用户使用计算机。
    第3层是指令集架构层。该层可通过机器语言编写程序实现对计算机硬件的控制,也称为传统机器层或ISA(Instruction Set Architecture)层,是计算机中软件系统与硬件系统之间的界面和纽带。一方面,用户在该层可用二进制表示的机器语言编程控制计算机的硬件系统:另一方面,该层之上的软件系统的各种程序必须转换成该层的机器语言形式才能被底层的硬件执行。与高级语言层和汇编语言层相比,该层的编程更加烦琐。
    第2层为微代码层。该层是实际的机器层,该层的用户使用微指令编写微程序,用户所编写的微程序由硬件直接执行,注意只有采用微程序设计的计算机系统才有这一层。
    第1层为逻辑门层。该层是计算机系统最底层的硬件系统,由逻辑门、触发器等逻辑电路组成,它是由逻辑设计者采用布尔代数设计的硬件内核。

2.数据信息的表示

2.1数据表示的作用

    数据表示的作用是将数据按照某种方式组织起来,以便计算机硬件能直接识别和使用。在设计和选择计算机内的数据表示方式时,一般需要综合考虑以下几方面的因素。
    (1)数据的类型:满足应用对数据类型的要求,一般要支持数值数据和非数值数据,前者如小数、整数、实数等,后者如ASCI码和汉字等。
    (2)表示的范围和精度:满足应用对数据范围和精确度的要求,这要通过选择适当的数据类型与字长来实现。
    (3)存储和处理的代价:应尽量使设计出的数据格式易于表示、存储和处理:易于设计处理数据的硬件,如运算器设计等需要综合考虑性能需求和硬件开销。
    (4)软件的可移植性:从保护用户软件投资的角度看,应使设计的数据格式在满足应用需求的前提下,符合相应的规范,方便软件在不同计算机之间的移植。

2.2数值数据的表示

    二进制数与十进制数一样有正负之分。书写时可以用“+”和“-”来表示数据的符号,这种数据书写格式也称为真值。由于数据只有正、负两种符号,因此在计算机中很自然就采用二进制的0和1来表示数据的符号,由符号和数值一起编码表示的二进制数称为机器数或机器码。常用的定点数机器码有原码、反码、补码和移码等,不同的机器码具有不同的特点。

2.3非数值数据的表示

  • 字符表示
        国际上广泛采用ASCI码(American Standard Code for Information Interchange)表示字符。它选用了常用的128个符号,其中包括33个控制字符、10个十进制数码、52个英文大写和小写字母、33个专用符号。目前广泛采用键盘输入方式实现信息输入。当通过键盘输入字符时,编码电路按字符键的要求给出与字符相应的二进制数码串。计算机处理输出结果时,则把二进制数码串按同一标准转换成字符,由显示器显示或打印机打印出来。
  • 汉字编码
        GB2312编码理论上能表示16384个编码,而实际上仅包含了7445个字符,其中6763个常用汉字、682个全角非汉字字符。为了检索方便,该标准采用94×94=8836的二维矩阵对字符集中的所有汉字字符进行了编码,矩阵的每一行称为“区”,每一列称为“位”,区号和行号都从1开始编码,采用十进制表示,所有字符都在矩阵中有唯一的位置,这个位置可以用区号和位号组合表示,称为汉字的区位码,区位码和GB2312编码之间可以互相转换:区位码+A0A0H=GB2312编码。但区位码比GB2312编码更为直观简单,而且在存储汉字字形码字库时空间浪费最小,检索更方便。

2.4数据信息的校验

    受元器件质量、电路故障、噪声干扰等因素的影响,计算机在对数据进行处理、传输和存储过程中难免出现错误。如何发现并纠正上述过程中的数据错误,是计算机系统设计者必须面临的考验。为此人们提出了校验码解决方案。
    校验码是具有发现错误或纠正错误能力的数据编码。校验码是用于提升数据在时间(存储)和空间两个维度上的传输可靠性的机制,其主要原理是在被校验数据(原始数据)中引入部分冗余信息(校验数据),使得最终的校验码(原始数据+校验数据)符合某种编码规则:当校验码中某些位发生错误时,会破坏预定规则,从而使得错误可以被检测,甚至可以被纠正。

3.运算方法和运算器

    计算机的主要功能就是对数据信息进行加工处理,这种加工处理可以归结为算术运算和逻辑运算,前者包括加、减、乘、除四则运算,并与数据的编码形式和表达形式(浮点、定点)密切相关;后者是一种无进位的位运算,相对比较简单。

3.1 计算机中的运算

     1. C语言中的位运算
       C语言中的位运算操作符主要包括“&”“|”“~”“^”4种,分别对应逻辑与、或、非、异或操作。这些位运算操作符会在编译器的作用下被翻译成与之对应的汇编指令,如x86中的逻辑与指令and、逻辑或指令or、逻辑非指令not、逻辑异或指令xor,这些汇编指令可以直接采用数字逻辑电路中的逻辑门进行实现,运算延迟为一级门电路延迟,属于最简单的运算功能部件。C语言中位运算和汇编代码的对应关系可以参考下面的C语言和x86汇编语言的混合例程。
     2. C语言中的逻辑运算
       C语言中的逻辑运算操作符主要包括“&&”“||”“!”3种,逻辑运算和位运算的区别在于,它属于非数值运算,操作数只能是“0”和“1”两个值,所有非“0”值都被当作“1”处理,所以逻辑运算翻译成汇编程序时不会对应具体的运算指令,而会演变成相应的程序分支结构。
     3. C语言中的移位运算
      C语言中的移位运算操作符主要包括“<<”“>>”两种,分别代表左移和右移。左移运算操作符对应汇编指令中的逻辑左移,而右移运算操作符则根据操作数是无符号还是有符号类型分别对应汇编指令中的逻辑右移和算术右移指令。逻辑左移将高位移出,低位补零;逻辑右移则是将低位移出,高位补零;算术右移的高位不是直接补零,而是填充原数据的符号位。
     4. C语言中的算术运算
       C语言中的算术运算操作符主要包括“+”“-”“*”“/”4种,分别对应算术运算中的加、减、乘、除。对于定点数的加减运算,由于有符号数采用补码表示,符号位也可以参与运算,因此编译程序通常直接转换成汇编语言中的add、sub指令,并不区分符号数据类型。而定点数的乘除运算则会根据操作数符号类型进行不同的转换,如下面例程中的mu/imul、div/idiv。所有浮点数的算术运算都会被编译成汇编浮点算术运算指令

4.存储系统

    根据冯·诺依曼计算机存储程序的设计思想可知,存储器是计算机中存放指令和数据的主要场所。存储器的容量越大,表明它能存储的信息越多。提高存储系统的访问速度,有利于提高计算机处理信息的速度。设计大容量、高速度、低成本的存储系统是计算机发展追求的目标之一。

4.1概述

4.1.1分类:

    1.按存储戒指分类:磁存储器,半导体存储器,光存储器
    2.按存取方式分类:随机,顺序,直接
    3.按信息的可改写性分类:读写,只读
    4.按信息的可保存性分类:易失性,非易失性
    5.按功能和存取速度分类:寄存器,高速缓冲,主存储器,外存储器

4.1.2层次结构

在这里插入图片描述

4.2主存的组织及与CPU的连接

    单片存储芯片的存储容量有限,要获得一个大容量的存储器,通常需要将多片存储芯片按照一定的方式组织来实现并与CPU连接,这就是存储器的组织。在存储器组织过程中,要实现存储芯片与CPU地址线、数据线和控制线的连接,需要注意以下几点。
    (1)连接的地址线的数量与CPU要访问的主存容量有关。
    (2)连接的数据线的数量与计算机字长有关。
    (3)SRAM芯片的控制线包括片选信号和读写控制线。
    (4)ROM芯片的控制线只有片选信号线。
    (5)DRAM没有片选控制线,进行容量扩展时,可以利用RAS和CAS控制芯片的选择。

4.3高速缓冲存储器

    cache工作原理:SRAM相对DRAM速度更快,但其容量有限,成本也更高,功耗较大,为了进一步提升CPU访问主存的性能,通常会在CPU与主存之间增加一个隐藏的小容量的快速的SRAM,称为cache。将主存中经常访问或即将访问的数据的副本调度到小容量的SRAM中,使得大部分数据访问都可以在快速的SRAM中进行,从而提升系统性能。
在这里插入图片描述

5.指令系统

    计算机中有一股控制信息流,它使得计算机按人们预先编制好的程序工作。这些控制信息就是控制计算机执行某种操作(如加、减、传送、转移等)的命令,称为指令。一台计算机中所有指令的集合称为该计算机的指令系统。指令提供的信息包括指令执行的操作、操作数的来源、操作结果的存放地等。

6.中央处理器

    中央处理器(Central Processing Unit,CPU)由运算器和控制器组成,是整个计算机的核心。它根据指令的要求指挥协调计算机各部件的工作,并且对信息处理过程中出现的异常情况进行处理。
    CPU的主要功能是执行程序,CPU上电复位后即开始周而复始地取指令、执行指令工作。作为执行程序的基本功能部件,从保证程序功能正确性的角度看,CPU应该具有以下几方面的功能。
    (1)程序控制。控制程序中指令执行的顺序,即控制程序中的指令按事规定的顺序自动地执行。冯·诺依曼计算机中程序指令通常按顺序执行,遇到分支指令且分支条件满足时会改变执行顺序,CPU必须能够正确地确定下条指令的地址。
    (2)操作控制。操作控制是指产生指令执行过程中需要的操作控制信号,以控制执行部件按指令规定的操作正确运行。例如执行加法指令时,CPU必须生成运算器的运算选择控制信号,以保证其进行加法操作。
    (3)时序控制。时序控制是指对每个操作控制信号进行定时,严格控制每个操作控制信号的开始时间和持续时间,以便按规定的时间顺序执行各操作,控制各功能部件。对任何一条指令而言,如果操作控制信号的时间不正确,则指令的功能就不能正确实现。
    (4)数据加工。数据加工即对数据进行算术、逻辑运算,或将数据在相部件之间传送。
    (5)中断处理。CPU应能及时响应内部异常和外部中断请求,如CPU在行指令过程中出现“未定义指令”,运算时出现异常(整数除零)、访问指令或数据时发生“缺页”,外部设备发生中断请求时,CPU应能暂时中断当前执行的程序并进行异常或中断处理,完成处理后
还应返回断点继续执行程序。
在这里插入图片描述

7.指令流水线

    把流水线技术应用于数据运算的执行过程,就形成了运算操作流水线,也称为部件级流水线,如浮点运算流水线将浮点数加法运算过程分解为求阶差、对阶、尾数求和、规格化4个子过程。将流水线技术应用于指令的解释执行过程,就形成了指令流水线。
    流水线处理技术并不是计算机领域中特有的技术。在计算机出现之前,流水线技术已经在工业领域中得到广泛应用,如汽车装配生产流水线等。计算机中的流水线技术是把一个复杂的任务分解为若干个阶段,每个阶段与其他阶段并行处理,其运行方式和工业流水线十分相似,因此被称为流水线技术。
    可以从两方面来提高计算机内部的并行性:一方面是采用时间上的并行性处理技术,通过将一个任务划分成几个不同的子过程,并且各子过程在不同的功能部件上并行执行,使在同一个时刻能同时执行多个任务,从而提升系统性能,这种方法即为流水线处理技术:另一方面是采用空间上的并行性处理技术,即在一个处理机内设置多个执行相同功能的独立操作部件,并且让这些操作部件并行工作,这种处理机被称为多操作部件处理机或超标量处理机。

8.总线系统

    现代计算机系统采用总线技术将CPU、主存以及输入输出设备等计算机功能部件连接起来,并通过总线在各功能部件之间传送地址信息、数据信息、控制信息,方便各功能部件之间协同工作,从而实现数据的处理、传输和存储,总线技术对计算机系统的性能有较大的影响。
    总线的主要功能是在连接的功能部件之间进行数据传输。由于总线被与之连接的多个功能部件共享,为避免信号冲突,同一时刻只允许一个功能部件向总线发送信息;但可以有多个设备同时接收数据。各功能部件只能分时地使用共享总线,相比分散连接方式,其传输效率较低。
    现代总线是指连接多个计算机内部功能部件或多个计算机的通信系统,总线既包括相关的硬件(总线控制器、总线接口)、软件,也包括相关的通信协议。现代计算机总线除了包括传统的并行总线,如早期的ISA、EISA总线和仍在使用的PCI总线,还包括串行传输的串行总线,如USB、PCIe、SATA等总线:连接方式既可以是常见的多端口总线,也可以是菊花链结构,甚至还可以是交换网络结构。
    总线发展至今结构日益多样化,可以从不同的角度对其进行分类,如下所示。
    总线按数据传送方向可分为单向和双向传输总线,单向传输总线是指只能从一端传输到另端而不能反向传输的总线,双向总线则可以实现两个不同方向的互相传递总线按时序控制方式可以分为同步总线和异步总线,同步总线传输双方采用公共时钟进行同步,异步总线采用应答机制进行同步。
    总线按信号线的功能可以分为数据总线、地址总线、控制总线。
    总线按信号传输的模式可分为并行传输总线和串行传输总线。

9.输入输出系统

    输入输出(I/O)系统主要用于实现CPU与外部设备、外部设备与主存之间的信息交换。输入输出系统是典型的软、硬件协同系统,既包括I/O设备、I/O接口、总线、I/O管理部件等I/O硬件系统,也包括驱动程序、软件访问接口、用户程序等I/O软件系统。
    一个计算机系统中包括多个I/O设备,所有设备均通过/O接口(总线接口)与总线相连,CPU使用设备地址经总线与I/O接口通信来访问I/O设备。I/O接口是连接总线与I/O设备的物理和逻辑界面,既包括物理连接电路,也包括软件交互的逻辑接口。总线标准化直接使接口标准化,采用标准接口进行设备连接有利于增强输入输出系统的独立性,降低连接的复杂度。
    为实现CPU与外部设备的连接和信息的交换,/O接口应具有如下主要功能。
    (1)设备寻址:接收来自总线的地址信息,经过译码电路,选择对应外部设备中的寄存器或存储器。计算机系统会对不同外部设备中的寄存器、存储器进行统一的端口地址或主存地址分配,不同外部设备,甚至同一外部设备中的不同寄存器的端口地址均不相同,因此对这些外部设备的访问可能需要根据访问的内容选择不同的地址。
    (2)数据交互:实现外部设备、主存与CPU之间的数据交换,这也是接口最基本的功能。
    (3)设备控制:传送CPU命令。接口能存储和识别CPU传送来的命令,并将命令传送到外部设备。这些命令主要有控制(启、停、复位等)、测试、读、写等。
    (4)状态检测:反映外部设备的工作状态。进行输入输出操作时,接口随时采集并保存外部设备的工作状况,以备CPU查询。这些状态有设备忙、设备就绪、设备故障、中断请求等
    (5)数据缓冲:匹配CPU与外部设备的速度差距。CPU、主存传送信息的速度远高于外部设备,为消除速度差异,通常采用设置数据缓冲寄存器暂存数据的方式,方便CPU通过总线快速访问外部设备;也有些设备采用先进先出缓冲区方式。
    (6)格式转换:实现数据格式转换或逻辑电平信号转换。外部设备的数据位宽和总线不同时,需要进行并串或串并的转换;如果信号电平与总线规范不同,信息交换的过程中还必须进行电平转换。
    除上述功能外,接口还应有中断、时序控制和数据检错、纠错等功能。

二.编译原理

在这里插入图片描述

三.操作系统概论

在这里插入图片描述

四.计算机网络原理

在这里插入图片描述

五.数据库系统原理

在这里插入图片描述


http://www.kler.cn/a/17430.html

相关文章:

  • SpringBoot实战(三十一)集成iText5,实现RSA签署PDF
  • arcgis做buffer
  • 蓝队知识浅谈(上)
  • 软件工程师简历(精选篇)
  • Llama微调测试记录
  • OCR识别铁路电子客票
  • 【圈友app】为什么要使用MongoDB数据库?什么样的数据适合存储到MongoDB数据库?
  • 【C++学习】类和对象--多态
  • 牛客网HJ31 单词倒排
  • 第七章 使用ssh服务管理远程主机
  • 中盐集团:加快推进数智化转型,引领盐行业高质量发展
  • leetcode刷题之有关树的算法
  • Codeforces Round 863 (Div 3)总结
  • cmake编译
  • 截图的背景色如何去除?这里介绍一个小工具
  • buildroot系统调试苹果手机网络共享功能
  • 人机智能中几个困难问题浅析
  • API接口的对接流程和注意事项
  • STM32F4_十进制和BCD码的转换
  • 【地铁上的设计模式】--结构型模式:装饰器模式
  • IJKPLAYER源码分析-重要字段
  • LeetCode 1003. Check If Word Is Valid After Substitutions【栈,字符串】中等
  • 【GAMES101】03 Transformation
  • 回忆我的爷爷
  • 什么是图数据库Neo4j
  • 力扣---LeetCode141/142. 环形链表 (I)和(II) (代码详解+流程图+数学逻辑拓展)