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

冯诺依曼架构及CPU相关概念

一. 操作系统的概念

1. 概念

操作系统(Operating System). 首先, 所有的计算机都是由软件和硬件构成的. 而操作系统就是许许多多软件中的一种软件, 操作系统可以看作是由两部分组成: 操作系统内核+系统级应用程序.

2. 作用

(1) 管理硬件设备, 调度和协调各个硬件之间的工作.

(2) 给软件提供稳定的运行环境.

3. 常见的操作系统

(1) Windows

(2) Linux

(3) Android

(4) MacOS

(5) IOS

其中Windows, Linux, MacOS 主要用于桌面端. Android和IOS主要用于移动端. 不同的系统之间, 程序是不能相互兼容的 (比如我在Linux上写了一个程序, 那么这个程序是不能直接拿到Windows上运行的).

二. 冯诺依曼架构

冯诺依曼架构提出: 计算机由输入设备(Input Device), 输出设备(Output Device), 存储器(Memory Unit), 中央处理器(Central Processing Unit "CPU") 四部分构成. (其中CPU又包括控制器(CU),和运算器(ALU)).

(1)输入设备:输入设备: 常见输入设备有: 磁盘, 网卡, 键盘, 话筒, 摄像头 等.

(2)输出设备: 常见的输出设备有: 磁盘, 网卡, 显示器, 打印机, 音箱 等.

(3)存储器: 用于存储数据.存储器又分为内存和硬盘(外存). 内存: 存储空间小, 访问速度快, 成本较高, 断电后数据丢失.  硬盘: 存储空间大, 访问速度慢, 成本较低, 断电后数据仍在.

(4)CPU: 中央处理器主要负责控制指令执行和运行计算, CPU除了控制器和运算器, 还包括一些小容量的寄存器(用于存储数据), 寄存器又分为通用寄存器(存储运算数据), 程序计数器(存储CPU下一条要执行的指令的地址), 指令寄存器(存储当前正在执行的指令).

计算机访问数据时的局部性原理: (1)空间局部性: 计算机在访问完一次数据之后, 下次在访问数据时, 总是会选择上次访问数据周围的数据进行访问. (2)时间局部性: 计算机在访问完一次数据之后, 后面再访问数据时, 会有很大概率再次访问到这次的数据.

冯诺依曼架构中的各个组成部分是如何通信和传输数据的?--总线. 总线包括: 控制总线(发出或接收型号,比如读/写/中断 等信号), 地址总线(传输CPU将要操作的数据在内存中的地址), 数据总线(用来读写内存中的数据).

冯诺依曼架构的优点: 简单性, 指令和数据存储在同一块内存中, 简化了计算机的设计和构造, 降低了硬件的复杂性. 缺点: 性能瓶颈: 指令和数据使用同一条总线传输, 且无法并行. 因此当传输数据时, CPU会处于等待状态, 这样就无法充分利用CPU, 从而降低了系统性能.

三. CPU

1. CPU的主流架构

(1) x86 / x64 架构: 主要给桌面端和服务器端使用.

(2) arm架构: 主要给移动端和嵌入式使用.

(3) RISC-V架构: 一套开源的CPU指令架构. 目前国内使用该架构发展我们自己的CPU.

2. CPU的核心参数

(1) 核心数: 最早的CPU都是单核的, 相当于电脑里只有一个人在工作. 后来intel发明了多核心CPU,

又发明了超线程技术, (例如: 12核心24线程 就相当于电脑里一共有24个人在工作, 每个核心里有两个人在工作). 这样使得CPU的性能大大增强.

(2) 频率: CPU的运算速度可以用频率来描述. 频率越高, 表示CPU的运算速度越快.

所以, 作为一名程序员, 我们衡量一个CPU的好坏, 就是看这个CPU的核心数多不多, 频率高不高.

3. CPU的寄存器和缓存

(1) 寄存器: CPU中除了控制器CU和运算器ALU, 还有"寄存器". 寄存器就是CPU内部用来存储数据的部分. 寄存器的存储空间比内存更小(往往只有几个kb), 访问速度比内存更快(因为离内存更近), 成本比内存更高.([注]: 寄存器中有一种叫做"程序计数器", 这个寄存器是用来存放下一条指令的地址的).

(2) 缓存: 如果内存中的某些数据是比较常用的, 而寄存器内又存不下这些数据. 那么这时候计算机就会把这些数据读到缓存中. 由于CPU不断从内存中读数据速度太慢的问题.([注]:java程序员在开发程序时, 往往吧缓存和寄存器看成是一个整体, 不区分那么细.)

4. CPU执行指令的流程

(1) 读取指令: CPU从内存中将指令读到CPU内部(程序计数器中).

(2) 解析指令: 识别出这个指令是具体要执行什么.

(3) 执行指令: 根据指令执行对应操作.

http://www.lryc.cn/news/470621.html

相关文章:

  • 智能管线巡检系统:强化巡检质量,确保安全高效运维
  • React写关键字高亮的三个方案
  • 重塑在线软件开发新纪元:集成高效安全特性,深度解析与评估会员与促销管理系统的系统架构设计
  • 多层感知机的从零实现与softmax的从零实现(真·0000零基础)
  • 【Rust练习】18.特征 Trait
  • 【自动化测试之oracle数据库】MacOs如何安装oracle- client
  • Spring MVC的MultipartFile
  • ●Leetcode| 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和
  • 关于算法的时间复杂度和空间复杂度的分析
  • 深入浅出 C++ STL:解锁高效编程的秘密武器
  • 2024年1024程序人生总结
  • 【p2p、分布式,区块链笔记 分布式容错算法】: 拜占庭将军问题+实用拜占庭容错算法PBFT
  • 鸿蒙NEXT开发-应用数据持久化之用户首选项(基于最新api12稳定版)
  • 人工智能_神经网络103_感知机_感知机工作原理_感知机具备学习能力_在学习过程中自我调整权重_优化效果_多元线性回归_逻辑回归---人工智能工作笔记0228
  • WISE:重新思考大语言模型的终身模型编辑与知识记忆机制
  • 网络安全证书介绍
  • 【已解决】【hadoop】【hive】启动不成功 报错 无法与MySQL服务器建立连接 Hive连接到MetaStore失败 无法进入交互式执行环境
  • 基于架设一台NFS服务器实操作业
  • eachers中的树形图在点击其中某个子节点时关闭其他同级子节点
  • Maven 介绍与核心概念解析
  • 计算机网络-MSTP概述
  • Redisson(三)应用场景及demo
  • 考研要求掌握的C语言程度(堆排序)1
  • chronyd配置了local的NTP server之后, NTP报文中出现public IP的问题
  • docker常用命令整理
  • 将CSDN博客转换为PDF的Python Web应用开发--Flask实战
  • AIGC学习笔记(3)——AI大模型开发工程师
  • Windows server 2003服务器的安装
  • HTML作业
  • MYSQL-SQL-04-DCL(Data Control Language,数据控制语言)