(二)计算机组成原理——计算机的基本组成

news2024/11/18 23:45:19

目录

冯·诺依曼计算机的特点

计算机硬件框图

系统复杂性管理的方法(3’Y)

计算机的工作步骤

上机前的准备

计算机的工作过程

存储器的基本组成

运算器的基本组成及操作过程

控制器


 

        计算机组成原理课程笔记。 

冯·诺依曼计算机的特点

        冯·诺依曼计算机主要由以下6个特点组成,其中存储程序较为重要,我们也会主要讲解一下。

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

计算机硬件框图

         这个是冯诺依曼计算机结构框图,运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。存储器用来存放数据和程序。控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果。 输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。 输出设备可将机器运算结果转换为人们熟悉的信息形式,如打印机输出、显示器输出等。

        但是这个结构主要就是靠运算器工作,甚至直接输入输出也需要运算器参与,所以运算器的负载和压力较大,在此基础上,有人提出了以存储器为核心的结构框图。

        这样的话,运算器的压力就不会那么大,整体看上去也较为简洁明了。但是我们现在把控制器和运算器合成一个东西,叫CPU,加上存储器,就组成了主机。然后输入输出设备我们统称为IO设备,主机加上IO设备,就组成了硬件,这也是现代计算机的结构框图。

         这样看起来,封装程度更高,更加清晰明了。

系统复杂性管理的方法(3’Y)

系统设计需要满足3Y原则:

  • 层次化(Hierachy):将被设计的系统 划分为多个模块或子模块
  • 模块化(Modularity):有明确定义 (well-defined)的功能和接口
  • 规则性(regularity):模块更容易被重用

计算机的工作步骤

        我们用计算机来解决问题的时候,首先并不是去编程,而是应该按照相应的步骤去操作。

上机前的准备

  • 建立数学模型
  • 确定计算方法
  • 编制解题程序

计算机的工作过程

存储器的基本组成

        主存储器(简称主存或内存)包括存储体 、各种逻辑部件及控制电路等。存储体由许多存储单元组成,每个存储单元又包含若干个存储元件(或称存储基元、存储元),每个存储元件能寄存一位二进制代码 “0” “1” 。

书上有个这样的例子,我觉得很形象的表述了存储器的构成:如果把一个存储体看作一幢大楼,那么每个存储单元可看作大楼中的每个房间,每个存储元可看作每个房间中的一张床位,床位有人相当于 “1” ,无人相当于 “0” 。床位数相当于存储字长。 显然,每个房间都需要有一个房间编号,同样可以赋予每个存储单元一个编号,称为存储单元的地址号。

存储体 – 存储单元 – 存储元件 (0/1)

大楼 – 房间 – 床位 (无人/ 有人)

        我们再提炼一下知识点:

  • 存储单元 ——存放一串二进制代码
  • 存储字 ——存储单元中二进制代码的组合
  • 存储字长 ——存储单元中二进制代码的位数 每个存储单元赋予一个地址号
  • 按地址寻访 

         主存储器之后,就是MAR和MDR,接下来介绍一下这两部分结构。

  • MAR 存储器地址寄存器 反映存储单元的个数
  • MDR 存储器数据寄存器 反映存储字长,就是数据展示寄存到这,不管是输入数据,还是输入数据。

举个例子:如果 MAR=4位 MDR=8位,存储单元个数为2^4=16, 存储字长8。

运算器的基本组成及操作过程

        运算器,主要就是用来进行运算的,我们来简单介绍一下如何进行运算。首先,我们需要3个寄存器:ACC 为累加器, MQ  为乘商寄,X为操作数寄存器,再加上一个个算术逻辑单 (ALU)。就组成了一个简单的运算器。

加法

        即将 [ACC] 看作被加数,先从主存中取一个存放在地址号单元内的加数 [M] ,送至运算器的 寄存器中,然后将被加数 [ACC] 与加数 [X] 相加,结果(和)保留在 ACC 中。 

减法

        将 [ACC] 看作被减数,先取出存放在主存地址号单元中的减数 [M] 并送入 ,然后 [ACC] -[X] ,结果(差)保留在 ACC 中。

乘法

        即将 [ACC] 看作被乘数,先取出存放在主存号地址单元中的乘数 [M] 并送入乘商寄存器 MQ ,再把被乘数送入寄存器,并将 ACC “0” ,然后 [X] [MQ] 相乘,结果(积)的高位保留在 ACC 中,低位保留在 MQ 中。注意,两根斜杠就是表示寄存器链接的意思。

除法

        即将 [ACC] 看作被除数,先取出存放在主存号地址单元内的除数 [M] 并送至寄存器,然 [ACC] 除以 [X] ,结果(商)暂留千 MQ,[ACC] 为余数 。若需要将商保留在 ACC 中,只需 做一步 [MQ]->ACC 即可。 

控制器

        控制器由程序计数器 (Program Counter, PC) 、指令寄存器 (Instruction Register, IR) 以及控制单元 (CU) 组成。 PC 用来存放当前欲执行指令的地址,它与主存的 MAR 之间有一条直接通路, 且具有自动加的功能,即可自动形成下一条指令的地址。 IR 用来存放当前的指令, IR 的内容 来自主存的 MDR IR 中的操作码 (OP (IR) )送至 CU ,记作 OP (IR)->CU ,用来分析指令;其地址码 (Ad(IR) )作为操作数的地址送至存储器的 MAR ,记作 Ad (IR) -> MAR, CU 用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sandbox启动未加载repeater的问题

背景 通过官方提供的 repeater 的下载链接,并不能够在sandbox启动时,加载进行,我们可以看下sandbox的日志截图 但是如果通过源码的repeater进行安装后,就能够成功加载到repeater。 分析 这是个很奇怪的问题,想要分析…

Sentinel的规则

四.Sentinel的规则 1.流控规则 1.1流控规则有哪些? 流量控制有以下几个角度: 资源的调用关系,例如资源的调用链路,资源和资源之间的关系;运行指标,例如 QPS(每秒查询率)、线程池、系统负载等&#xff…

深度学习时数据量过大的一个解决思路:将零散的数据集中化

问题描述 最近笔者在做一个kaggle上的树叶分类的题目(https://www.kaggle.com/competitions/classify-leaves),这个题目要求根据一张树叶的图片给出这片树叶的类别,这个题目也是沐神的《动手深度学习》课程里的一个课程竞赛题目。…

编译原理笔记03

第四章 语义分析 语义分析也称为类型检查,上下文相关分析,主要负责检查程序的上下文相关的属性,例如变量使用前要声明,函数调用要与声明一致等。 1.语义规则 通常来说,程序设计语言都采用自然语言来表达程序语言的语义…

JMeter分布式压测

一、Jmeter4.0分布式压测准备工作 压测注意事项 the firewalls on the systems are turned off or correct ports are opened. 系统上的防火墙被关闭或正确的端口被打开。 all the clients are on the same subnet. 所有的客户端都在同一…

数据科学与工程理论基础复习提纲

一、Sketch 1.1 简单抽样算法 1.1.1 核心思想 对于到达的元素aia_iai​,以概率pM/mpM/mpM/m对该元素的频数加1。 MMM:抽样后的数据流大小mmm:原始数据流大小 1.1.2 操作 更新:当元素aia_iai​到达时,以ppp的概率更…

分库分表:垂直分库、垂直分表、水平分库、水平分表四个概念

文章目录一、分库分表的意义二、垂直分表的思路三、垂直分库的思路四、水平分库的思路五、水平分表的思路一、分库分表的意义 随着公司业务快速发展,数据库中的数据量猛增,访问性能也变慢了,优化迫在眉睫。分析一下问题出现在哪儿呢&#xf…

太强了,阿里内部JDK源码剖析知识手册,由浅入深堪称完美

前言 作为Java程序员,在这里想问问大家在空余时间有没有去读过 JDK 源码,虽然读源码有点自不量力的感觉,(大佬可以忽略这句)但是如若能够经常在空余时间看一下 jdk 源码不仅可以让自己对日常的开发环境了解得更加深刻…

【nowcoder】笔试强训Day3

目录 一、选择题 二、编程题 2.1在字符串中找出连续最长的数字串 2.2 数组中出现次数超过一半的数字 一、选择题 1.以下代码运行输出的是 public class Person{private String name "Person";int age0;} public class Child extends Person{public String gra…

Python json常见用法

目录 导包 api介绍 常见用法 json转python内置对象 字典对象 数组对象 文件读取 python内置对象转json 字典转json 字典转json(压缩存储) 字典转json(美化输出) 文件读取 自定义对象 普通对象 嵌套对象 补充支持 …

设计一个亿级高并发系统架构 - 12306火车票核心场景DDD领域建模

“ 架设一个亿级高并发系统,是多数程序员、架构师的工作目标。 许多的技术从业人员甚至有时会降薪去寻找这样的机会。但并不是所有人都有机会主导,甚至参与这样一个系统。今天我们用12306火车票购票这样一个业务场景来做DDD领域建模。” 开篇 要实现软件…

数据库系统概论第七章(数据库设计)知识点总结(1)—— 概述

本专栏收录了数据库的知识点,而从本文起,将讲述有关于数据库设计有关知识点,提供给有需要的小伙伴进行学习,本专栏地址可以戳下面链接查看 🎈 数据库知识点总结(持续更新中):【数据库…

了解学习node中著名的co模块原理,生成器+promise实现async+await

***内容预警*** 新手内容,菜鸟必看,大佬请绕道 首先 co 是一个npm第三方模块,我们需要npm install 之后才能使用它。 作为一个菜鸟我相信你肯定没有用过这个模块,但是据说这个模块很有名,那么我们就有必要来了解一下它…

35. 池化层 / 汇聚层 代码实现

1. 池化层 在下面的代码中的pool2d函数,我们实现汇聚层的前向传播。 这类似于之前文章中的的corr2d函数。 然而,这里我们没有卷积核,输出为输入中每个区域的最大值或平均值。 from torch import nn from d2l import torch as d2l# X是输入&…

实习------Java基础

基础语法 基本数据类型(熟悉) Java有哪些数据类型 定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。 boolean类型占多少个字节? boolean类型…

【docker】手把手教学docker与docker-compose安装

目录 1、docker安装 2、docker-compose安装 1、docker安装 方式一 https://fanjufei.blog.csdn.net/article/details/123500511https://fanjufei.blog.csdn.net/article/details/123500511 方式二 通过命令行安装。 sudo apt install docker.io sudo systemctl status doc…

linux篇【12】:计算机网络<后序>

一.tcp接入线程池(使用线程池) 1.tcp初步接入线程池 我们设置了对应的任务是死循环,那么线程池提供服务,就显得有不太合适。我们给线程池抛入的任务都是短任务 因为他并没有访问任何类内成员,所以可以把执行方法提到…

智能服务机器人简介

文章大纲 服务机器人上升趋势明显服务机器人核心技术与应用场景目标跟踪人脸识别算法SLAM 即时定位与地图构建(Simultaneous Localization and Mapping,简称SLAM)老人看护手势识别多模态与机器人参考文献与学习路径服务机器人上升趋势明显 服务机器人充分融合机器视觉、语音…

【Redis—持久化】

1.持久化机制 持久化就是把内存的数据写到磁盘中,防止服务宕机导致内存数据丢失。 2.AOF AOF概述 AOF持久化:以独立日志就把该命令。以追加的方式写入到一个文件里,然后重启 Redis 的时候,先去读取这个文件里的命令达到恢复目…

K8S-存储-Volume

问题 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃 时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。…