首页 > 其他分享 >CPU与指令集

CPU与指令集

时间:2023-07-24 11:22:23浏览次数:33  
标签:立正 学员 受训 指令 指令集 CPU

CPU与指令集

一、CPU

CPU是指Central Processing Unit,即中央处理器。是计算机的运算和控制中心,其功能主要是执行程序指令并计算相关数据。CPU 主要由控制单元、运算单元、存储单元等组成。

img

控制单元:负责将程序指令转化成硬件电路中的实际动作。比如打开某个加法器或减法器等等。控制单元有点像解码器,它收到程序的某条指令后,会按预先设定好的顺序,依次打开的适当的运算电路。

运算单元里:面是各种运算器,负责将来自存储单元的数据,沿着控制单元“划定”的路径去进行适当的计算,然后将计算结果送回到存储单元。存储单元是CPU与外部交换数据的场所。

img本图来自网络

二、指令集

程序下达不同的指令,控制单元会执行不同的预设操作。这就好比军训时,指导员高喊“立正”,受训学员就要双脚并拢,身体站直,两眼前视,双手下垂伸直,中指对齐裤中缝。在这个过程中,“立正”是一条指令,而后面受训学员要完成的一连串的动作,是指导员和受训学员之间预先约定的动作组合。

又比如指导员高喊“稍息”。则受训学员要在立正的基础上,右脚向前伸半步。“稍息”是另一条指令。

类似的军训指令还有“向左转”、“向右转”、“向右看齐”、“原地踏步走”等等。所有的指令合称指令集。

CPU也一样。在设计CPU的时候,预先定义了一些基本的操作,比如:“加”、“减”、“乘”、“除”、“比较”、“取整”等等。然后设计好A指令由哪些基本操作组成,按什么顺序执行;B指令由哪些基本操作组成,又按什么顺序执行等等。CPU预设了N多个指令,这就是CPU的指令集。

三、不同类型的CPU,使用不同的指令集。

  1. X86架构的CPU,使用复杂指令集。英文为Complex Instruction Set Computing,简写作CISC。复杂指令集的设计目的,是希望直接通过硬件来完成复杂的指令执行过程,而让程序更简单方便、程序运行速度更快。这就好比军训时的“立正”指令,指导员只要高喊“立正”即可,受训学员负责从其它任何姿态转换到预定的“立正”姿态。指导员就相当于程序,他只要下达“立正”这个指令即可。很简单。而受训学员就相当于CPU,要自行负责姿态转换的全部动作。这条指令对于CPU来说,要完成的动作很多,很复杂。

  2. ARM、MIPS、Power PC等CPU,使用精简指令集。英文为Reduced Instruction Set Computing,简写作RISC。在精简指令集中,只包含使用频率较高的少量简单指令和一些必要的支持操作系统和高级语言的指令。这就好比军训过程中,指导员每次都要高喊“站直”、“脚并拢”、“向前看”、“手垂下”等指令,来合成受训学员的“立正”的姿态。因为受训学员只能知道“站直”、“脚并拢”、“向前看”、“手垂下”的指令怎么做,不知道“立正”该怎么办。

从上面的比喻可以看出,复杂指令集和精简指令集不可以通用。基于复杂指令集平台开发的程序,在精简指令集平台上不能正常运行。相反,基于精简指令集平台开发的程序,在复杂指令集平台上也不能正常运行。操作系统也一样。

四、生态

CPU和指令集不同,导致相关产业生态不同。目前,个人计算机和服务器产品,以X86架构的CPU为主。移动终端和部分嵌入式系统,以ARM CPU为主。如果要开发新的指令集架构,就要重新构建从核心硬件到操作系统,再到应用软件的全套生态系统,推行起来非常复杂困难。这也是具有自主知识产权的国产CPU难以推广的原因之一。

标签:立正,学员,受训,指令,指令集,CPU
From: https://www.cnblogs.com/JaxYoun/p/17576771.html

相关文章

  • VMware 客户机操作系统已禁止CPU。请关闭或重置虚拟机
    系统版本:Win11虚拟机版本:VM16.2.4从其他系统迁移过来的VM虚拟机,启动提示错误。搜好多都解决不了。(图片来源于网络)解决另外一个“无法运行虚拟机”问题时,无意中把这个问题解决了。解决方法:关闭系统安全选项https://blog.csdn.net/tianpeng666/article/details/1292683......
  • 在docker内定位占用cpu过高的java线程
    参考​​>确定进程信息判断该进程是否在Docker容器中。使用cat/proc/<pid>/cgroup查看打印内容是否包含:/docker/。原理是Docker使用了Linuxcgroups使用pstree-s<pid>查看打印的进程树是否包含docker-containe,显示信息如下:systemd(1)───docker(1101)───docke......
  • 10分钟学习cpustat命令
    cpustat是 Linux 下一个强大的系统性能测量程序,它用Go编程语言编写。它通过使用“用于分析任意系统的性能的方法(USE)”,以有效的方式显示CPU利用率和饱和度。cpustat能用两种方式输出数据:定时汇总的纯文本列表和每个取样的彩色滚动面板。它高频率对系统中运行的每......
  • 如何选择一款合适自己电脑的CPU
    首先是CPU,CPU主要是Intel的和AMD的,英特尔下又有赛扬,酷睿,至强,奔腾系列酷睿是常规家用和办公用的,一般配电脑都配酷睿的,酷睿有1代到10代,除了1代是三位数(例如:i7920),10代是5位数(例如:i910980XE,i510210u)其他几代均为4位数,第一位数是代数,例如i76700k的第一位数是六,说明这是六代,......
  • 工具 --- IL指令集解释
    引言汇总一下所有的.NETIL指令,以及它们的名称、操作码值、堆栈转换行为和描述。作为反编译IL代码时的查询字典。IL指令集列表以下内容来自微软官方文档,通过百度翻译API翻译为中文。指令英文描述中文描述AddAddstwovaluesandpushestheresultontotheev......
  • windows 2008r2开启cpu虚拟化
    Windows2008R2开启CPU虚拟化介绍在虚拟化技术中,CPU虚拟化是其中一个关键的部分。它允许虚拟机在物理主机上运行,同时有效地共享主机的CPU资源。本文将介绍如何在WindowsServer2008R2中开启CPU虚拟化功能,并提供相应的代码示例。背景WindowsServer2008R2是一款广泛使用的......
  • 使用spring boot压测查看机器cpu内存jvm
    使用SpringBoot压测机器的CPU、内存和JVM在这篇文章中,我将向你展示如何使用SpringBoot来压测机器的CPU、内存和JVM。这将帮助你了解应用程序在不同负载下的性能表现,并帮助你进行性能调优。下面是整个过程的步骤概览:步骤操作1创建一个SpringBoot项目2添加压力......
  • Linux mysqlCPU
    实现"LinuxmysqlCPU"的步骤为了实现"LinuxmysqlCPU",我们需要按照以下步骤进行操作。下表展示了整个流程的步骤,并提供了每一步需要做什么,以及需要使用的代码及其注释。步骤操作代码注释1安装Linux操作系统无需代码确保你的计算机上已正确安装Linux操作系统2安......
  • C/C++ 宏获取当前编译程序工作的CPU指令集平台(综合大全覆盖各类CPU)
    参考:https://blog.csdn.net/liulilittle/article/details/126644547?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-126644547-blog-43935465.235%5Ev38%5Epc_relevant_default_base3&dep......
  • 使用GGML和LangChain在CPU上运行量化的llama2
    MetaAI在本周二发布了最新一代开源大模型Llama2。对比于今年2月发布的Llama1,训练所用的token翻了一倍,已经达到了2万亿,对于使用大模型最重要的上下文长度限制,Llama2也翻了一倍。在本文,我们将紧跟趋势介绍如何在本地CPU推理上运行量化版本的开源Llama2。 https:......