1.2 计算机硬件的基本组成

2024-08-26 07:52

本文主要是介绍1.2 计算机硬件的基本组成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.早期冯诺依曼计算机结构

世界上第一台计算机是ENIAC,需要手动接线来控制计算,所以它的计算速度受限,所以冯诺依曼提出了“存储程序”的概念,即将需要用到的指令以二进制的形式事先输入到计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直到程序执行结束。
在这里插入图片描述
早期冯诺依曼机的硬件结构图如图所示。

  • 输入设备:将信息转换成机器能够识别的形式,经过运算器存储在存储器里面。
  • 存储器:存放数据和程序。
  • 运算器:实现算术/逻辑运算。
  • 输出设备:将结果转换成人们所熟悉的形式。
  • 控制器:指挥程序运行

在计算机系统中,软件和硬件在逻辑上是等效的,即对于同一个功能,我们既可以用软件来实现,也可以用硬件来实现。比如:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算,也可以用软件的方式,执行多次加法运算来实现。
在这里插入图片描述
冯·诺依曼计算机的特点:

  • 计算机由五大部件组成
  • 指令和数据以同等地位存于存储器,可按地址寻访
  • 指令和数据用二进制表示
  • 指令由操作码和地址码组成
  • 存储程序
  • 以运算器为中心

缺点:输入/输出设备与存储器的数据传送通过运算器完成,导致数据计算的效率降低

2.现代计算机结构

以存储器为中心,运算器和控制器统称为cpu,cpu+主存称为主机。
在这里插入图片描述
在这里插入图片描述

3.各个硬件的工作原理

(1)主存储器

主存储器里用于存放指令和数据的称为存储体,由一个一个的存储单元构成,除此之外,还有两个寄存器,分别是MAR(Memory Address Register,存储地址寄存器)和MDR(Memory Data Register,存储数据寄存器)。
CPU把数据存在存储器中某个位置,取数据时,CPU需要给MAR一个地址,根据这个地址可以找到对应的存储单元,取出相应的数据到MDR中。类比于菜鸟驿站里面的货架,对货架进行编号,取快递需要告诉店员你的取件号,根据取件号将快递放在柜台,就可以拿到快递了。
在这里插入图片描述
存储体由一个个的存储单元构成的,存储单元中存放了一串二进制代码,每一位二进制代码的存放需要一个存储元件,存储单元中二进制代码的组合又称为存储字,二进制的位数称为存储字长。
在这里插入图片描述

(2)运算器

运算器的主要功能是实现算术运算和逻辑运算。
主要部件:

  • ACC(Accumulator ):累加器,用于存放操作数,或运算结果。
  • MQ(Multiple-Quotient Register):乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
  • X:通用的操作数寄存器,用于存放操作数。
  • ALU(Arithmetic and Logic Unit): 算术逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算。
    在这里插入图片描述

(3)控制器

控制器基本功能:产生指令执行过程所需要的所有控制信 号,控制相关功能部件执行相应操作。
基本组成:

  • CU(Control Unit ):控制单元,分析指令,给出控制信号。
  • PC(Program Counter):存放当前欲执行指令的地址,与MAR之间有一条直接通道,具有计数功能(PC)+ 1→PC。
  • IR(Instruction Register ) 存放当前执行的指令内容,来自主存的MDR。
    每完成一条指令需要分成3个阶段,第一个阶段为取指令,根据PC中的地址从内存中取出那条指令,取出的指令放在IR中,CU这个部件分析这条指令是要做什么的,分析完后控制其他部件完成这条指令
    在这里插入图片描述

(4)输入输出系统

输入设备:输入设备的任务是把编好的程序和原始数据送到计算机中去,并把它们转换成计算机能识别、能接受的信息形式。(键盘、鼠标、网卡、扫描仪等)

输出设备:输出设备的任务是把计算机的处理结果以人或者其它设备能接受的形式送出计算机。(显示器、声卡、网卡、打印机等)

4.计算机的工作过程

用C语言写了这样一段程序,定义了a,b,c,y 4个变量,执行了一个功能y=a*b+c,经过编译后变成机器语言装入到主存中。a,b,c,y 4个变量分别存放在5、6、7、8四个地址中,前5个地址存放机器指令。
在这里插入图片描述步骤:
取数操作:
(1)首先数据和指令存放在存储体中,在程序运行之前pc=0,指向第一条指令的存储地址,pc的值需要传给MAR,使得MAR的值为0;
(2)控制器向主存指明了接下来CPU要访问的是0号地址所对应的内容且是读操作,再根据MAR的内容找出0号地址所对应的二进制数据,并把这个数据给MDR。
(3)此时MAR的内容为00001 000000101
(4)将MDR的内容通过数据总线传给控制器的IR寄存器,(IR)=000001 0000000101
(5)将指令的操作码部分送到CU里进行分析,分析得知,这是“取数”指令
(6)将指令的地址码部分给MAR,导致(MAR)=5
(7)根据MAR的值找到对应的存储单元,取出a的值
(8)M(MAR)→MDR,导致(MDR)=0000000000000010=2
(9)(MDR)→ACC,导致(ACC)=0000000000000010=2

在这里插入图片描述

以此类推
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
从前面的步骤可知,任何一条指令的执行都需要经过取指令、分析指令和执行指令三个阶段。取指令和分析指令是必经步骤,执行指令不同的指令具体步骤不同。取指令阶段,MDR的数据肯定是要放到IR中,而在执行指令阶段,CU会根据这条指令来决定MDR数据放在ACC还是MQ中,所以根据指令周期的不同,CPU来区分取出来的是指令还是数据。
总结:
在这里插入图片描述

申明:本内容属于学习记录,如有侵权或者不对的地方,请联系作者进行更改。

这篇关于1.2 计算机硬件的基本组成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107980

相关文章

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.