CPU架构和指令集

这篇具有很好参考价值的文章主要介绍了CPU架构和指令集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 、CPU架构

不同的CPU架构通常使用不同的指令集。每种CPU架构都有其自己的一组特定的机器指令,这些指令用于执行计算机程序。不同的CPU架构之间的指令集是不兼容的,这意味着编写的程序通常需要根据目标CPU的架构进行编译或汇编,以确保它们能够在该CPU上正确运行。

一些常见的CPU架构包括:

  1. x86架构:这是一种广泛使用的CPU架构,英特尔和AMD的“专属”,常见于个人计算机。Intel从16位微处理器8086开始的整个CPU芯片系列,系列中的每种型号都保持与以前的各种型号兼容,主要有8086,8088(16位),80186,80286(过渡产品),80386,80486以及以后各种型号的Pentium芯片(32位CPU),通常所说的x86都是指32位CPU

    • i386:其实就是指Intel 80386,是第一个32位的x86架构的处理器,所有intel早期的cpu,amd早期的cpu都支持这种指令集,intel官方文档里面称为“IA-32”(安腾)
    • AMD64:在原始32位X86指令集的基础上加入了X86-64扩展64位X86指令集,使这款芯片在硬件上兼容原来的32位X86软件,并同时支持X86-64的扩展64位计算
    • x86-64:AMD比Intel率先制造出了商用的兼容x86的CPU,AMD称之为AMD64,后来Intel也开始支持AMD64的指令集,但是换了个名字,叫x86_64,表示是x86指令集的64位扩展
  2. ARM架构:ARM是一种低功耗、广泛应用于移动端和便携设备的CPU架构。ARM指令集包括一系列ARM汇编指令,用于执行各种操作,包括数据处理、分支、加载/存储等

  3. MIPS架构:MIPS是一种用于嵌入式系统(网关和机顶盒)和一些服务器领域的CPU架构,其指令集包括一组MIPS汇编指令,用于执行各种任务。

在不严格要求的情况下:

  • x86=i386=IA32
  • amd64=x86_64=x64!=IA64(纯64架构,不兼容32位,被市场抛弃)

AMD 和 Intel 在它们的CPU中实现了一些不同的指令集扩展。这些扩展通常是为了提供更好的性能、安全性或能力。一些著名的扩展包括:

  1. SSE (Streaming SIMD Extensions):基于x86体系架构的实现,用于加速多媒体数据处理,如图像处理和音频处理
  2. AVX (Advanced Vector Extensions):基于x86体系结构的实现。它是由Intel首次引入的,用于加速向量化计算
  3. AES-NI (Advanced Encryption Standard New Instructions):基于x86和x86-64体系结构的指令集扩展,旨在提高加密和解密操作的性能
  4. AMD64 和 Intel 64:虽然它们都是基于x86的64位扩展,但AMD和Intel的64位实现在某些方面略有不同,尽管它们兼容
  5. 虚拟化指令集

厂商开发兼容某种指令集的CPU需要指令集专利持有者授权,典型的例如:Intel授权AMD,使后者可开发兼容x86指令集的CPU。

如果从最基本的逻辑角度来对指令集进行分类的话,可以分为两大类,即所谓的“复杂指令集CISC”与“精简指令集RISC”系统,x86是CISC。

二、操作系统和CPU

不同的CPU有不同的指令集,所以同一个操作系统在不同CPU上运行的是不同的“代码”。

那么,同一个操作系统为不同cpu要写好几遍,也太繁琐了吧。是的,在高级编程语言发明前确实是这样的。但是当高级编程语言(特别是C语言)发明后,操作系统的大部份都是用高级编程语言写的。对于不同的CPU指令集,人们只需要选用相应的编译器(高程程序语言到相应CPU指令集的翻译程序),编译一下就好了。

三、CPU的位数和字长

要设计处理器,首先就需要有指令集,规定处理器相应操作,通过指令集去控制处理器实现相应功能,比如说输入11111111时CPU就会去怎么操作(汇编其实就是用助记符来表示指令集的某一机器指令)。

软件(包括操作系统)之所以会有x86和x64的区分,是因为它们需要与特定的处理器架构兼容。不同的处理器架构具有不同的指令集和寄存器大小,因此软件必须根据目标处理器的架构进行编译和优化。由于x86和x64处理器的寄存器大小和内存访问方式等方面存在差异,编译器需要根据目标架构的特性进行优化和调整。因此,相同的代码在编译为x86和x64时,生成的机器码会有所不同。在程序进行编译的时候会去选择目标平台的位数、操作系统和处理器架构等,如果软件是针对x86指令集编译的,它将只能在x86的CPU上运行,而无法在x64的CPU上运行。

x86和x64使用的是同一套指令集,即x86指令集。x64是x86指令集的64位扩展,但它仍然兼容32位的x86指令集。这意味着x64处理器可以运行32位的操作系统和应用程序,同时也能够运行64位的操作系统和应用程序。

CPU位数(机器字长)= CPU中寄存器的位数

地址总线的位数决定了CPU的寻址能力,它不一定和CPU位数相同,比如早期16位的CPU使用的是20位的地址总线,通过段地址的方式来实现20位的寻址。而现在64位的CPU一般用的也就是40位的地址总线,因为没有那么大的地址寻址的需求。而如果数据总线的长度小于字长的话,那么会浪费cpu的处理能力,大于字长的话,传动过来的数据cpu一次处理不完,所以一般数据总线的长度等于字长。

操作系统也有位数,操作系统的位数是依赖于指令集架构的,比如操作系统可能会写着"64位操作系统,基于x64的处理器"。它是假定操作系统就是工作在x64的处理器上,操作系统里会去用到64位的寄存器,这也意味着CPU的位数至少是64,当然也可以更大,比如32位操作系统是可以工作在64位的CPU上的。文章来源地址https://www.toymoban.com/news/detail-674814.html

到了这里,关于CPU架构和指令集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux操作系统指令(1)

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux操作系

    2024年02月02日
    浏览(55)
  • linux操作系统常见指令汇总

    目录 1.ls 指令 2.pwd命令 3.cd 指令 4. touch指令 5.mkdir指令: 6.rmdir指令 rm 指令(重要): 7.man指令: 8.cp指令: 9.mv指令:  10.more指令  11.less指令 12.head指令 13.tail指令 14.时间相关的指令 15.Cal指令 16.find指令: 19.tar指令: 打包/解包,不打开它,直接看内容 20.bc指令: 21.uname –

    2024年02月12日
    浏览(49)
  • Linux操作系统常用指令大全(一)

    语法:shutdown shutdown -h now 【立即关机】 shutdown -h 1 【1分钟后关机,shutdown后不填默认一分钟后关机】 shutdown -r now 【立即重启】 无论是要关机还是重启,建议先运行 sync 命令将内存数据保存到磁盘。 语法:man 命令或配置文件 man ls 【查看 ls 命令的帮助手册】 man netstat 【查看

    2024年01月23日
    浏览(67)
  • Linux【命令篇】—— Linux操作系统常用指令大全

    目录 一、关机与重启指令 (1) shutdown - 关机 (2) halt - 关机 (3) reboot - 重启 (4) sync - 将内存的数据同步到磁盘 二、帮助指令 (1) man - 查看某个命令的帮助手册 (2) help - 查看某个命令的帮助信息 三、文件目录类指令 (1) pwd - 显示当前目录的绝对路径 (2) ls -

    2024年02月02日
    浏览(65)
  • Java 使用 oshi 获取当前服务硬件信息(操作系统、CPU、内存、磁盘)

    这里需要引入两个依赖包: HardWareUtil: CpuInfo: JvmInfo: MemoryInfo: SysFile: SystemDetails: SizeEnum: 控制台输出: CpuInfo(cpuNum=16, total=16501.0, sys=329.0, used=657.0, wait=0.0, free=15419.0) JvmInfo(total=2.64241152E8, max=4.211081216E9, free=2.5297664E8, version=11.0.18, home=C:Program FilesJavajdk-11) SystemDetails(

    2024年02月05日
    浏览(60)
  • ubuntu系统CPU压力测试-有图有真相

    为了测试CPU在ubuntu下满负荷运行机器散热情况,而进行的简单实验。 确认物理机是否联网,确认资源OK #sudo  update   1.cpu性能测试-安装软件 #sudo apt install -y stress psensor htop stress 介绍 可以查看这个大神的作品 链接:Linux性能优化(一)——stress压力测试工具_stress工具_天山老

    2024年02月09日
    浏览(41)
  • HarmonyOS鸿蒙操作系统架构

    目录 1. 分布式架构: 2. 统一的开发平台: 3. 多内核共享: 4. 自适应界面: 5. AR、VR、MR支持: 6. 安全和隐私保护: 7. AI集成: 8. 应用生态系统: 9. 开源和开放: 10. 快速部署和更新: 11. 分布式数据管理: 12. 分布式安全体系: 13. 分布式标识和认证: 14. 统一的开发语言和

    2024年02月04日
    浏览(49)
  • 【HarmonyOS】鸿蒙操作系统架构

    其它相关推荐: 软考系统架构之案例篇(架构设计相关概念) 系统架构之微服务架构 系统架构设计之微内核架构 所属专栏:系统架构设计师 HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。 在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适

    2024年02月08日
    浏览(48)
  • Windows 操作系统架构介绍

    Windows 系统架构包括以下组成部分: 内核:Windows 内核是操作系统的核心部分,它负责管理系统资源、处理用户程序和驱动程序的请求、协调各种系统组件之间的通信等任务。Windows 内核分为用户模式和内核模式,其中内核模式是更高级别、更安全的模式,用户程序无法直接访

    2024年02月15日
    浏览(62)
  • 系统架构设计师-第2章-操作系统

    计算机系统由硬件和软件两部分组成。操作系统是计算机系统中最基本的系统软件,它 既管理计算机系统的软、硬件资源,又控制程序的执行。操作系统随着计算机研究和应用的 发展逐步形成并日趋成熟,它为用户使用计算机提供了一个良好的环境,从而使用户能充分 利用

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包