计算机组成原理——小啃一下

news2024/9/28 20:36:14

CPU和主存储器结构

CPU

  • 运算器
    • ACC(累加器)
    • ALU(算数逻辑单元)
    • MQ(乘商寄存器)
    • X(操作数寄存器)
  • 控制器
    • CU(控制单元)
    • IR(指令寄存器)
    • PC (程序计数器)

主存储器

  • M(主存储体)
  • MDR(存储器数据寄存器)
  • MAR(存储器地址寄存器)

计算机组成框图

指令的操作

指令操作

第一条指令

取指

1: PC ⟶ 指令地址 MAR \textbf{PC}\overset{\textbf{指令地址}}{\longrightarrow}\textbf{MAR} PC指令地址MAR,命令存储器读;
2: 0000010000001000 ⟶ MDR \textbf{0000010000001000}\overset{\textbf{}}{\longrightarrow}\textbf{MDR} 0000010000001000MDR
3: MDR ⟶ 指令 IR \textbf{MDR}\overset{\textbf{指令}}{\longrightarrow}\textbf{IR} MDR指令IR

分析、执行

1: OP(IR) ⟶ 操作码 CU \textbf{OP(IR)}\overset{\textbf{操作码}}{\longrightarrow}\textbf{CU} OP(IR)操作码CU,得到操作码 000001 \textbf{000001} 000001,为取数指令;
2: CU ⟶ Ad(IR) MAR \textbf{CU}\overset{\textbf{Ad(IR)}}{\longrightarrow}\textbf{MAR} CUAd(IR)MAR,地址码 0000001000 \textbf{0000001000} 0000001000,送入 MAR \textbf{MAR} MAR,命令存储器读;
3: 0000001000 ⟶ x MDR ⟶ x ACC \textbf{0000001000}\overset{{x}}{\longrightarrow}\textbf{MDR}\overset{{x}}{\longrightarrow}\textbf{ACC} 0000001000xMDRxACC,存储器将地址码 0000001000 \textbf{0000001000} 0000001000对应数据 x x x送入 MDR \textbf{MDR} MDR MDR \textbf{MDR} MDR再送入 ACC \textbf{ACC} ACC
4 PC+1 \textbf{PC+1} PC+1,生成下一条指令地址。

第二条指令

取指、分析、执行…

1: PC ⟶ 指令地址 MAR \textbf{PC}\overset{\textbf{指令地址}}{\longrightarrow}\textbf{MAR} PC指令地址MAR,命令存储器读;
2: MDR ⟶ 指令 IR \textbf{MDR}\overset{\textbf{指令}}{\longrightarrow}\textbf{IR} MDR指令IR
3: OP(IR) ⟶ 操作码 CU \textbf{OP(IR)}\overset{\textbf{操作码}}{\longrightarrow}\textbf{CU} OP(IR)操作码CU,得到操作码 000100 \textbf{000100} 000100,为乘法指令;
4: CU ⟶ Ad(IR) MAR \textbf{CU}\overset{\textbf{Ad(IR)}}{\longrightarrow}\textbf{MAR} CUAd(IR)MAR,地址码 0000001001 \textbf{0000001001} 0000001001,送入 MAR \textbf{MAR} MAR,命令存储器读;
5: MDR ⟶ a ACC \textbf{MDR}\overset{{a}}{\longrightarrow}\textbf{ACC} MDRaACC,存储器将地址码 0000001001 \textbf{0000001001} 0000001001对应数据 a a a送入 MDR \textbf{MDR} MDR MDR \textbf{MDR} MDR再送入 MQ \textbf{MQ} MQ
6:将 [ACC] \textbf{[ACC]} [ACC]看作被乘数,方括号表示寄存器里的数据
[ACC] → X \textbf{[ACC]} \rightarrow\textbf{X} [ACC]X
0 → ACC \textbf{0} \rightarrow\textbf{ACC} 0ACC
[MQ]*[X] → ACC//MQ \textbf{[MQ]*[X]} \rightarrow\textbf{ACC//MQ} [MQ]*[X]ACC//MQ
7 PC+1 \textbf{PC+1} PC+1,生成下一条指令地址。

第三条指令

取指、分析、执行…

1: PC ⟶ 指令地址 MAR \textbf{PC}\overset{\textbf{指令地址}}{\longrightarrow}\textbf{MAR} PC指令地址MAR,命令存储器读;
2: MDR ⟶ 指令 IR \textbf{MDR}\overset{\textbf{指令}}{\longrightarrow}\textbf{IR} MDR指令IR
3: OP(IR) ⟶ 操作码 CU \textbf{OP(IR)}\overset{\textbf{操作码}}{\longrightarrow}\textbf{CU} OP(IR)操作码CU,得到操作码 000011 \textbf{000011} 000011,为加法指令;
4: CU ⟶ Ad(IR) MAR \textbf{CU}\overset{\textbf{Ad(IR)}}{\longrightarrow}\textbf{MAR} CUAd(IR)MAR,地址码 0000001010 \textbf{0000001010} 0000001010,送入 MAR \textbf{MAR} MAR,命令存储器读;
5: MDR ⟶ b ACC \textbf{MDR}\overset{{b}}{\longrightarrow}\textbf{ACC} MDRbACC,存储器将地址码 0000001010 \textbf{0000001010} 0000001010对应数据 b b b送入 MDR \textbf{MDR} MDR MDR \textbf{MDR} MDR再送入 X \textbf{X} X
6:将 [ACC] \textbf{[ACC]} [ACC]看作被加数,方括号表示寄存器里的数据
[ACC]+[X] → ACC \textbf{[ACC]+[X]} \rightarrow\textbf{ACC} [ACC]+[X]ACC
此时 ACC \textbf{ACC} ACC存储的数据为 a x + b ax+b ax+b
7 PC+1 \textbf{PC+1} PC+1,生成下一条指令地址。

第四条指令

取指、分析、执行…

1: PC ⟶ 指令地址 MAR \textbf{PC}\overset{\textbf{指令地址}}{\longrightarrow}\textbf{MAR} PC指令地址MAR,命令存储器读;
2: MDR ⟶ 指令 IR \textbf{MDR}\overset{\textbf{指令}}{\longrightarrow}\textbf{IR} MDR指令IR
3: OP(IR) ⟶ 操作码 CU \textbf{OP(IR)}\overset{\textbf{操作码}}{\longrightarrow}\textbf{CU} OP(IR)操作码CU,得到操作码 000100 \textbf{000100} 000100,为乘法指令;
4: CU ⟶ Ad(IR) MAR \textbf{CU}\overset{\textbf{Ad(IR)}}{\longrightarrow}\textbf{MAR} CUAd(IR)MAR,地址码 0000001000 \textbf{0000001000} 0000001000,送入 MAR \textbf{MAR} MAR,命令存储器读;
5: MDR ⟶ x ACC \textbf{MDR}\overset{{x}}{\longrightarrow}\textbf{ACC} MDRxACC,存储器将地址码 0000001000 \textbf{0000001000} 0000001000对应数据 x x x送入 MDR \textbf{MDR} MDR MDR \textbf{MDR} MDR再送入 MQ \textbf{MQ} MQ
6:将 [ACC] \textbf{[ACC]} [ACC]看作被乘数,方括号表示寄存器里的数据
[ACC] → X \textbf{[ACC]} \rightarrow\textbf{X} [ACC]X
0 → ACC \textbf{0} \rightarrow\textbf{ACC} 0ACC
[MQ]*[X] → ACC//MQ \textbf{[MQ]*[X]} \rightarrow\textbf{ACC//MQ} [MQ]*[X]ACC//MQ
此时 ACC \textbf{ACC} ACC存储的数据为 ( a x + b ) × x (ax+b)\times x (ax+b)×x
7 PC+1 \textbf{PC+1} PC+1,生成下一条指令地址。

第五条指令

取指、分析、执行…

1: PC ⟶ 指令地址 MAR \textbf{PC}\overset{\textbf{指令地址}}{\longrightarrow}\textbf{MAR} PC指令地址MAR,命令存储器读;
2: MDR ⟶ 指令 IR \textbf{MDR}\overset{\textbf{指令}}{\longrightarrow}\textbf{IR} MDR指令IR
3: OP(IR) ⟶ 操作码 CU \textbf{OP(IR)}\overset{\textbf{操作码}}{\longrightarrow}\textbf{CU} OP(IR)操作码CU,得到操作码 000011 \textbf{000011} 000011,为加法指令;
4: CU ⟶ Ad(IR) MAR \textbf{CU}\overset{\textbf{Ad(IR)}}{\longrightarrow}\textbf{MAR} CUAd(IR)MAR,地址码 0000001011 \textbf{0000001011} 0000001011,送入 MAR \textbf{MAR} MAR,命令存储器读;
5: MDR ⟶ c ACC \textbf{MDR}\overset{{c}}{\longrightarrow}\textbf{ACC} MDRcACC,存储器将地址码 0000001011 \textbf{0000001011} 0000001011对应数据 c c c送入 MDR \textbf{MDR} MDR MDR \textbf{MDR} MDR再送入 X \textbf{X} X
6:将 [ACC] \textbf{[ACC]} [ACC]看作被加数,方括号表示寄存器里的数据
[ACC]+[X] → ACC \textbf{[ACC]+[X]} \rightarrow\textbf{ACC} [ACC]+[X]ACC
此时 ACC \textbf{ACC} ACC存储的数据为 a x 2 + b x + c ax^2+bx+c ax2+bx+c
7 PC+1 \textbf{PC+1} PC+1,生成下一条指令地址。

第六条指令

取指、分析、执行…

1: PC ⟶ 指令地址 MAR \textbf{PC}\overset{\textbf{指令地址}}{\longrightarrow}\textbf{MAR} PC指令地址MAR,命令存储器读;
2: MDR ⟶ 指令 IR \textbf{MDR}\overset{\textbf{指令}}{\longrightarrow}\textbf{IR} MDR指令IR
3: OP(IR) ⟶ 操作码 CU \textbf{OP(IR)}\overset{\textbf{操作码}}{\longrightarrow}\textbf{CU} OP(IR)操作码CU,得到操作码 000010 \textbf{000010} 000010,为存数指令;
4: CU ⟶ Ad(IR) MAR \textbf{CU}\overset{\textbf{Ad(IR)}}{\longrightarrow}\textbf{MAR} CUAd(IR)MAR,地址码 0000001100 \textbf{0000001100} 0000001100,送入 MAR \textbf{MAR} MAR,命令存储器写;
5: ACC ⟶ [ A C C ] MDR \textbf{ACC}\overset{{[ACC]}}{\longrightarrow}\textbf{MDR} ACC[ACC]MDR,存储器将对应数据 [ACC] \textbf{[ACC]} [ACC]送入 MDR \textbf{MDR} MDR,将 MDR \textbf{MDR} MDR中的数据写入存储器地址码 0000001100 \textbf{0000001100} 0000001100中;
6: PC+1 \textbf{PC+1} PC+1,生成下一条指令地址。

第七条指令

取指、分析、执行…

1: PC ⟶ 指令地址 MAR \textbf{PC}\overset{\textbf{指令地址}}{\longrightarrow}\textbf{MAR} PC指令地址MAR,命令存储器读;
2: MDR ⟶ 指令 IR \textbf{MDR}\overset{\textbf{指令}}{\longrightarrow}\textbf{IR} MDR指令IR
3: OP(IR) ⟶ 操作码 CU \textbf{OP(IR)}\overset{\textbf{操作码}}{\longrightarrow}\textbf{CU} OP(IR)操作码CU,得到操作码 000101 \textbf{000101} 000101,为打印指令;
4: CU ⟶ Ad(IR) MAR \textbf{CU}\overset{\textbf{Ad(IR)}}{\longrightarrow}\textbf{MAR} CUAd(IR)MAR,地址码 0000001100 \textbf{0000001100} 0000001100,送入 MAR \textbf{MAR} MAR,命令存储器读;
5: MDR ⟶ 数据 IO \textbf{MDR}\overset{{数据}}{\longrightarrow}\textbf{IO} MDR数据IO,存储器将对应数据送入 IO \textbf{IO} IO打印;
6: PC+1 \textbf{PC+1} PC+1,生成下一条指令地址。

第八条指令

取指、分析、执行…

1: PC ⟶ 指令地址 MAR \textbf{PC}\overset{\textbf{指令地址}}{\longrightarrow}\textbf{MAR} PC指令地址MAR,命令存储器读;
2: MDR ⟶ 指令 IR \textbf{MDR}\overset{\textbf{指令}}{\longrightarrow}\textbf{IR} MDR指令IR
3: OP(IR) ⟶ 操作码 CU \textbf{OP(IR)}\overset{\textbf{操作码}}{\longrightarrow}\textbf{CU} OP(IR)操作码CU,得到操作码 000110 \textbf{000110} 000110,为停机指令;
4: PC \textbf{PC} PC不在更新指令地址。

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

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

相关文章

基础课12——深度学习

深度学习技术是机器学习领域中的一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能。深度学习的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习的核心思想是通过学习样本数据的内在规律…

java第二十章总结多线程

20.2创建线程 20.2.1继承Thread类 Thread类是Java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建议Thread实例。 public class ThreadTest extedns Thread{} run方法格式: public void run(){} 20.1让线程…

纯干货篇,用Stable diffusion制作广告的保姆级教程

今天就想给大家演示一般如何使用Stable diffusion为你的产品添加场景,秒变广告大片。 掌握这个技能,你可以随意将产品添加不同的场景,节约复杂的拍摄布景和拍摄成本。 话不多说,接下来是详细讲解演示流程 首先选出一张你的产品图…

SAP_ABAP_编程基础_基本数据类型(预定义数据类型)介绍 , 它有10种

SAP ABAP 顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读441次。目标:基于对SAP abap 顾问能力模型的梳理,给一年左右经验的abaper 快速成长为三年经验提供超级燃料!https://blog.csdn.net/j…

完美的输出打印 SQL 及执行时长[MyBatis-Plus系列]

导读 Hi,大家好,我是悟纤。过着爱谁谁的生活,活出不设限的人生。 在我们日常开发工作当中,避免不了查看当前程序所执行的SQL语句,以及了解它的执行时间,方便分析是否出现了慢SQL问题。 MyBatis-Plus提供了两种SQL分析打印的方式,用于输出每条SQL语句及其执行时间,针…

Redis应用的16个场景

常见的16种应用场景: 缓存、数据共享分布式、分布式锁、全局 ID、计数器、限流、位统计、购物车、用户消息时间线 timeline、消息队列、抽奖、点赞、签到、打卡、商品标签、商品筛选、用户关注、推荐模型、排行榜. 1、缓存 String类型 例如:热点数据缓存&#x…

【解决方案】多用户多回路宿舍用电管理解决方案

01 引言 近几年来,因违规使用大功率恶性负载电器导致宿舍失火的安全事故在各大高校时有发生,给学生和学校都带来了巨大的损失。北京大学、哈尔滨工业大学、上海商学院以及俄罗斯人民友谊大学等高校学生公寓发生的火灾给高校学生公寓的安全用电敲响了警钟…

视频封面:视频图片提取技巧,从指定时长中捕捉需求的图片

在当今的数字时代,视频已成为日常生活中不可或缺的一部分。无论是社交媒体、博客,视频都发挥着重要的作用。而一个吸引的视频封面往往能吸引更多的观众点击观看,选择清晰度高、色彩鲜艳且能吸引人的图片。同时,确保图片与视频内容…

【FMC139】青翼科技基于VITA57.1标准的4路500MSPS/1GSPS/1.25GSPS采样率14位AD采集FMC子卡模块

板卡概述 FMC139是一款基于VITA57.1标准规范的JESD204B接口FMC子卡模块,该模块可以实现4路14-bit、500MSPS/1GSPS ADC采集功能。该板卡ADC器件采用ADI公司的AD9680芯片,全功率-3dB模拟输入带宽可达2GHz。该ADC与FPGA的主机接口通过8通道的高速串行GTX收发器进行互联…

捷达EA113汽油机四缸汽车曲柄连杆机构毕业设计

wx供重浩:创享日记 对话框发送:捷达 获取完整论文报告工程源文件 本文以捷达EA113汽油机的相关参数作为参考,对四缸汽油机的曲柄连杆机构的主要零部件进行了结构设计计算,并对曲柄连杆机构进行了有关运动学和动力学的理论分析与计…

ESP32-Web-Server编程-JS 基础 1

ESP32-Web-Server编程-JS 基础 1 概述 前述分别在 HTML 基础 和 CSS 基础 中介绍了 HTML、CSS 的基本内容。HTML 定义了网页中包含哪些对象,CSS 定义了对象的显示样式。JavaScript(LiveScript)是一种运行于客户端的解释性脚本语言,使 HTML 页面更具动态…

Java第二十章多线程

线程简介 在 Java 中,并发机制非常重要。在以往的程序设计中,我们都是一个任务完成后再进行下一个任务,这样下一个任务的开始必须等待前一个任务的结束。Java 语言提供了并发机制,程序员可以在程序中执行多个线程,每一…

Mysql的二阶段提交

先看执行器与InnoDB引擎是如何更新一条指定的数据的 可以看到,InnoDB在写redo log时,并不是一次性写完的,而有两个阶段,Prepare与Commit阶段,这就是"两阶段提交"的含义。 为什么要写redo log,不…

在虚拟机搭建nignx,和使用本地访问nginx的情况

下载nginx yum install nginx 查看nginx是否安装成功。 nginx -v nginx的配置文件的目录和资源的目录。 先到nginx.conf的目录下,在 /etc/nginx/nginx.conf,编辑它。 vi /etc/nginx/nginx.conf 可以看到默认的html的目录。在 /usr/share/nginx/html 下面…

滑块验证码之图片距离计算

滑块验证码之图片距离计算 1.使用工具 vscodepython3.8 2.安装opencv-python python -m pip install opencv-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com查看安装的版本: C:\Users\wenhz>pip list|findstr opencv opencv-pyt…

SRM供应商询价招投标管理系统

前言: 在当今高度信息化的时代,企业运营的效率和透明度对于企业的生存和发展至关重要。供应商管理系统(SRM)作为企业采购管理的重要工具,旨在提升企业与供应商之间的协作效率,优化采购流程,降低…

MySOL常见四种连接查询

1、内联接 &#xff08;典型的联接运算&#xff0c;使用像 或 <> 之类的比较运算符&#xff09;。包括相等联接和自然联接。 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如&#xff0c;检索 students和courses表中学生标识号相同的所有行。 2、…

U-Net及其变体在医学图像分割中的应用研究综述

U-Net及其变体在医学图像分割中的应用研究综述 论文来自&#xff1a;中国生物医学工程学报 2022 摘 要&#xff1a; 医学图像分割可以为临床诊疗和病理学研究提供可靠的依据&#xff0c;并能辅助医生对病人的病情做出准确的判断。 基于深度学习的分割网络的出现解决了传统自动分…

每日一练2023.11.28———【PTA】

题目链接&#xff1a; L1-009 N个数求和 题目要求&#xff1a; 本题的要求很简单&#xff0c;就是求N个数字的和。麻烦的是&#xff0c;这些数字是以有理数分子/分母的形式给出的&#xff0c;你输出的和也必须是有理数的形式。 输入格式&#xff1a; 输入第一行给出一个正整…

SpringBoot+Redis编写一个抢红包雨的案例。附源码。

案例演示 SpringBootRedis编写一个抢红包雨的案例。附源码 1、案例分析&#xff0c;整体方案介绍 预备上线一个红包雨活动。这个红包雨的思路是活动开始前25分钟&#xff0c;在后台创建活动。然后前端用户进入&#xff0c;到点后将设置的金额拆分成多个小红包&#xff0c;开启倒…