计算机组成原理知识——CPU结构组成和功能、堆栈、RISC、

文章目录

  • 前言
  • 一、CPU组成
  • 二、指令执行步骤
    • 1、取指Instruction Fetch/IF
    • 2、译码Instruction decode/ID
    • 3、访存Memory/MEM
    • 4、执行Execute/EX
    • 5、写回Writeback/WB
  • 三、冯诺依曼结构和哈佛结构
  • 四、数据结构中的堆栈 VS 程序内存中的堆区和栈区
    • 1、数据结构的堆栈
    • 2、C语言程序的内存
  • 五、CISC和RISC
  • 六、虚拟内存和cache


前言

2023.9.6 计组知识开始学习


一、CPU组成

中央处理单元:简称为CPU或处理器,功能是控制计算机的操作和处理数据

  • 控制器:控制计算机的操作,例如读取指令、分析指令、时序、总线的控制等
  • 运算器:完成数据处理功能
  • 寄存器:临时存储指令、地址、数据、计算结果等
  • 中断

二、指令执行步骤

  • 3个:取指、分析、执行
  • 5个:取指、译码、执行、访存、写回

冯诺依曼型计算机的CPU就是5个阶段

1、取指Instruction Fetch/IF

从主存取指令到指令寄存器

2、译码Instruction decode/ID

指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别出不同的指令操作和操作数

3、访存Memory/MEM

根据译码得到的地址,去取相对于的操作数,可能需要访问主存

4、执行Execute/EX

完成指令的操作

5、写回Writeback/WB

把指令运行的结果数据写到某个存储的地方,通常经常被写到CPU的内部寄存器,方便后续的指令快速地存取

三、冯诺依曼结构和哈佛结构

冯诺依曼结构:数据空间和程序空间是一体的,指令存储器和数据存储器合并在一起,取指令和取操作数在同一总线上,指令和数据位宽相同,因此在同一个总线上进行读写时,指令和数据不能同时操作,必须按照先后顺序,因而限制了处理速度。采用的是CICS指令集

  • 优点:硬件简单,如intel的x86

哈佛结构:数据和程序是分开存放的,分开的,独立地址,独立访问,在一个周期内可以同时获得指令和操作数,指令和数据位宽可以不相同。采用的RISC指令集

  • 优点:逻辑代码和变量单独存放,互不干扰,如ARM、DSP

四、数据结构中的堆栈 VS 程序内存中的堆区和栈区

1、数据结构的堆栈

定义:数据按序排列的数据结构

:经过排序的树形结构,可任意存取。由程序员手动分配和释放,若程序员不释放,程序结束时可能由OS回收。
:有先进先出的性质的数据结构,由操作系统自动分配和释放

2、C语言程序的内存

  • 代码区:存放二进制代码,.text段
  • 全局区:存放全局和静态变量,初始化-.data段,未初始化的-.bss段。内存由系统分配,程序结束后,由系统释放
  • 常量区:存储常量的区域,不允许修改。内存在程序结束时,由系统释放
  • 堆区:Heap,存放程序员自己创建的变量,是不连续的内存区域,常使用new、alloc等关键词,需要用delete来进行释放,否则的话可能造成内存泄漏
  • 栈区:Stack,存放函数的参数,局部变量的区域,由编译器自动分配和释放,这部分是连续
区别堆区栈区
内存分配方式手动申请和释放操作系统自动分配和释放
空间大小理论上最大为虚拟内存的大小远小于堆
存放内容自定义内容存储函数返回地址、参数、局部变量等
数据结构使用数据结构中的树先进后出的队列
缓存方式二级缓存一级缓存,调用时存放,调用完立马释放
分配效率

五、CISC和RISC

指令:完成任务的多个步骤组成,把数值传送到寄存器或进行相加运算

CICScomplex instruction set computer,复杂指令系统计算机
RISCreduced instruction set computer,精简指令集计算机,执行较少类型计算机指令的微处理器,能够以更快的速度来执行操作
(原因:执行不同类型指令需要不同的晶体管和电路器件,类型越少,电路越快)

六、虚拟内存和cache

虚拟内存:基于局部性原理(选择题有做过),在程序装入时,把程序运行所需要的装入内存,其他的部分放在外存,使得速度提升。
(程序运行时,只会用到小部分的数据,把这部分放在较快的存储器里面,其他部分放在速度慢、容量大的存储器中)

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

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

相关文章

nas汇编程序的调试排错方法

nas汇编程序的调试排错方法: 1、查找是哪一步错了 2、查看对应的*.lst文件,本例中是"asmhead.lst" 3、根据*.lst文件的[ERROR #002]提示查看源码,改错。 4、重新运行编译,OK 1、查找是哪一步错了: nask.ex…

基于任务队列的机器学习服务实现

将机器模型部署到生产环境的方法有很多。 常见的方法之一是将其实现为 Web 服务。 最流行的类型是 REST API。 它的作用是全天候(24/7)部署和运行,等待接收来自客户端的 JSON 请求,提取输入,并将其发送到 ML 模型以预测…

SpringBoot / Vue 对SSE的基本使用(简单上手)

一、SSE是什么? SSE技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端。服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,…

大前端面试注意要点

前端面试:从IT专家角度全面解析 在数字时代,前端开发工程师的角色变得越来越重要。随着网站和应用程序的复杂性和交互性越来越高,对具有专业技能的前端开发人员的需求也在不断增长。对于正在寻找前端开发职位的开发者,或者正在寻…

http请求头部(header)详解

目录 常见的请求头部字段 GET方法的使用方法: POST方法的使用方法: Accept字段的使用方法 Content-Type字段的使用 总结 在互联网协议中,HTTP请求头部(header)是一个非常重要的组成部分。它们是客户端和服务器之…

软件架构设计(八) 基于架构的软件开发方法

1、基于架构的软件设计(ABSD) ABSD虽然在日常生活中并不常见,但是在考试中却是极为常见的,因此仍然是我们的重点学习知识点。 1.1、基本概念 特点 基于架构的软件设计(Architecture-Based Software Design,ABSD),这个开发方法是架构驱动。 即强调由业务、质量和功…

【python自动化】七月PytestAutoApi开源框架学习笔记(一)

前言 本篇内容为学习七月大佬开源框架PytestAutoApi记录的相关知识点,供大家学习探讨 项目地址:https://gitee.com/yu_xiao_qi/pytest-auto-api2 阅读本文前,请先对该框架有一个整体学习,请认真阅读作者的README.md文件。 本文…

【嵌入式软件C编程】主函数free子函数malloc地址的两种方式以及注意事项

本文档主要记录嵌入式C语言在子函数中应用malloc函数的方式,在实际项目中内存管理特别重要 一般在主函数中(main)使用malloc函数,然后在通过free函数进行释放内存,但有时候如果必须在子函数长调用malloc函数该怎样进行…

基于VueCli创建自定义项目

1.安装脚手架 (已安装) npm i vue/cli -g2.创建项目 vue create hm-exp-mobile选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) > Manually select features 选自定义手动选择功能 选择vue的版本 3.x …

电脑黑屏只有鼠标箭头?4个正确处理方法记得收藏!

“我刚刚在用电脑办公呢,突然之间电脑就黑屏了,只剩下一个鼠标箭头。这是什么原因引起的呢?怎么解决电脑黑屏的问题呀?求解答!” 不知道朋友们有没有遇到过在使用电脑时,突然电脑就黑屏了并且只剩下鼠标箭头…

国内免费无限制的chatgpt导航和ai画画

非常实用的AI网址导航,其实际使用体验非常便捷。该导航系统不仅提供了全面的网站分类和搜索功能,还对每个网站进行了精准的评估和排序。推荐高质量的网站资源,并实时检测网站的安全性,保障用户的上网安全。 总的来说&#xff1a…

RHCA之路---EX280(8)

RHCA之路—EX280(8) 1. 题目 On master.lab.example.com using the template file in http://materials.example.com/exam280/gogs as a basis, install an application in the ditto project according to the following requirements: All of the registry entries must poi…

微信小程序源码【195套】【源码导入视频教程+源码导入文档教程+详细图文文档教程】

一、项目说明 盒马鲜生.zip 轻客洗衣.zip 云文档.zip 仿ofo共享单车.zip 仿美团外卖.zip 仿饿了么.zip 灵犀外卖.zip 小契约(交友互动小程序).zip 信息科技公司展示小程序.zip 华云智慧园区.zip 房地产公司展示.zip 企业OA系统小程序.zip 优惠券卡卷小程…

整理mongodb文档:事务(一)

个人博客 整理mongodb文档:事务(一) 原文链接,个人博客 求关注,本文主要讲下怎么在mongose下使用事务,建议电脑端看 文章概叙 本文的开发环境为Nodejs,在‘单机模式’讲解最基本的事务概念。并没有涉及分片以及集群&#xff0…

ESP32C3 LuatOS RC522②写入字符串

编写了字符串转16进制表函数 -- 将字符串转换为十六进制表 local function stringToHexTable(str)local hexTable {}local maxLength 16 -- 最大长度为16个元素-- 将字符串转换为十六进制for i 1, #str doif i > maxLength thenbreakendlocal hex string.format("…

QT第一天

创建登录界面 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setFixedSize(700,800);//1.实例化一个标签,设置上面界面QLabel *lab1 new QLabel(th…

ElementUI浅尝辄止16:Tag 标签

用于标记和选择。 1.如何使用&#xff1f; 由type属性来选择tag的类型&#xff0c;也可以通过color属性来自定义背景色。<el-tag>标签一</el-tag> <el-tag type"success">标签二</el-tag> <el-tag type"info">标签三</e…

基于Mendix移动原生的离线应用

一、前言 不同行业的企业会有特殊的业务场景&#xff0c;比如某些制造业的企业的工厂是物理隔离的&#xff0c;但工程师需要拿着平板输入很多生产数据&#xff1b;某些煤炭和矿业企业&#xff0c;在实际的工作区都是比较偏远&#xff0c;信号比较差&#xff0c;但是又需要用手…

简单记录下gin中使用中间件记录操作日志

1、直接定义中间件package middlewareimport ("bytes""encoding/json""fmt""github.com/gin-gonic/gin""go.uber.org/zap""io""strconv""strings" )func LoggerMiddleWare() gin.HandlerFunc…

golang中如何判断字符串是否包含另一字符串

golang中如何判断字符串是否包含另一字符串 在Go语言中&#xff0c;可以使用strings.Contains()函数来判断一个字符串是否包含另一个字符串。该函数接受两个参数&#xff1a;要搜索的字符串和要查找的子字符串&#xff0c;如果子字符串存在于要搜索的字符串中&#xff0c;则返…