CPU,ISA架构,CPU位数与内存

news2024/11/17 4:37:45

CPU(Central Processing Unit,中央处理器)是计算机系统中的主要组件之一,负责执行程序指令并进行数据处理。我们之前已经介绍了CPU与冯诺依曼机CPU与冯诺依曼机-CSDN博客,而ISA(Instruction Set Architecture,指令集架构)则是 CPU 的设计蓝图,定义了 CPU 支持的指令集合、寄存器、数据类型和操作。

ISA

ISA 可以被看作是一种抽象的计算机模型,它规定了计算机硬件与软件之间的接口,使得编译器、汇编器和操作系统能够与 CPU 进行通信,并为程序员提供编程的接口。

ISA 定义了以下内容:

  1. 指令集:ISA 规定了 CPU 支持的指令集合,包括算术运算、逻辑运算、数据传输、控制流程等操作。不同的 CPU 可能支持不同的指令集,例如 x86、ARM、MIPS 等。

  2. 寄存器:ISA 规定了 CPU 中的寄存器结构,包括通用寄存器、特殊目的寄存器等。寄存器用于存储指令执行过程中的临时数据、地址和控制信息。

  3. 内存访问:ISA 规定了 CPU 如何与内存进行交互,包括内存地址空间的组织、地址访问方式(直接寻址、间接寻址等)、数据的读写操作等。

  4. 数据类型:ISA 规定了 CPU 支持的数据类型和操作,包括整数、浮点数、字符、向量等数据类型,以及对应的算术运算、逻辑运算、转换操作等。

  5. 异常处理和控制流:ISA 规定了 CPU 如何处理异常事件(如中断、陷阱、系统调用等)、程序的控制流程(分支、跳转、子程序调用等)以及指令执行的顺序和优先级。

总的来说,ISA 定义了 CPU 的体系结构和指令集,为软件开发提供了底层的硬件支持和抽象接口,使得不同的软件可以在不同的 CPU 上运行,并为 CPU 的设计和优化提供了基础。

不同的 ISA(指令集架构)代表着不同类型的 CPU 架构和指令集设计。以下是几种常见的 ISA 的简要介绍:

  1. x86

    • x86 是一种由英特尔(Intel)开发的指令集架构,最初用于 16 位和 32 位的微处理器,后来也用于 64 位的处理器。它是个人计算机(PC)和服务器领域最常见的 CPU 架构之一。
    • x86 架构的处理器包括 Intel 的 Pentium、Core 系列以及 AMD 的 Athlon、Ryzen 等。
    • x86 指令集包括大量的指令,用于执行各种操作,支持多种数据类型和内存访问模式。
  2. ARM

    • ARM 是一种精简指令集(RISC)架构,最初由英国的 Acorn Computers 开发,后来成为一种广泛应用于移动设备、嵌入式系统和消费电子产品的 CPU 架构。
    • ARM 架构的处理器包括 ARM Cortex-A 系列(应用处理器)、Cortex-R 系列(实时处理器)和 Cortex-M 系列(微控制器)等。
    • ARM 指令集精简而高效,适合低功耗和嵌入式系统,同时也具备一定的可扩展性和性能。
  3. MIPS

    • MIPS 是一种精简指令集(RISC)架构,由 MIPS Technologies 公司开发,广泛应用于嵌入式系统、网络设备和工业控制等领域。
    • MIPS 架构的处理器包括一系列的 MIPS32 和 MIPS64 处理器,其中 MIPS32 适用于 32 位系统,MIPS64 适用于 64 位系统。
    • MIPS 指令集简洁而灵活,具有较高的性能和效率,常被用于需要高性能的嵌入式系统和网络设备。
  4. PowerPC

    • PowerPC 是一种精简指令集(RISC)架构,最初由 IBM、苹果公司和摩托罗拉共同开发,后来成为游戏机、工作站和嵌入式系统的常用 CPU 架构之一。
    • PowerPC 架构的处理器包括 IBM 的 Power 系列和 Freescale(原 Motorola)的 PowerPC 系列。
    • PowerPC 指令集在高性能计算和嵌入式领域表现出色,具有较高的性能、可扩展性和可靠性。

ISA与编译

ISA那么重要,那么我们编译一个java文件或者C文件的过程中,他扮演了什么角色呢?

C语言
  1. 编译阶段:在编译C程序时,编译器会将源代码转换为目标机器的汇编代码。这个过程中,编译器会根据目标机器的ISA生成相应的汇编代码,以便最终生成与该ISA兼容的机器码。

  2. 链接阶段:在链接阶段,编译器会将各个源文件编译生成的目标文件链接在一起,形成最终的可执行文件。链接器会处理符号解析、重定位等任务,并确保生成的可执行文件与目标机器的ISA兼容。

C程序在编译和链接阶段会考虑到目标机器的ISA,以生成适合该平台的机器码。

Java

        在Java程序中,不同机器的ISA(Instruction Set Architecture)通常在Java虚拟机(JVM)执行字节码时发挥作用。Java字节码是与平台无关的中间代码,它由javac编译器从Java源代码生成。当Java程序在特定的平台上运行时,Java虚拟机会将字节码转换为该平台的本地机器码执行,这个转换过程中会考虑到该平台的ISA。因此,Java程序在执行过程中会在JVM层面与不同机器的ISA进行交互。

CPU位数

在计算机中,CPU位数通常指的是CPU寄存器的位数,这决定了CPU一次可以处理的数据位数。CPU寄存器是CPU内部用于存储和处理数据的关键部件,因此其位数直接影响着CPU能够处理的数据大小。

举例来说,一个32位CPU意味着它的寄存器的宽度是32位(也交一个word),即一次能处理32位的数据。同样,64位CPU的寄存器宽度是64位,可以一次处理64位的数据。CPU的位数通常也就是它能够寻址的内存地址的位数,及地址总线位数,也等于操作系统的位数。

地址线的位数决定了计算机可以寻址的内存单元的数量。如果一个计算机有 n 位地址线,也就是地址有几个bit位,那么它可以寻址 2^n 个内存单元。例如,32位地址线可以寻址的内存单元数量是 2^32,而64位地址线可以寻址的内存单元数量是 2^64。

有了计算机的内存大小与地址线位数,我们就能计算出常见的计算机内存单元大小了,分别为1,2,4字节。

以一个4GB内存,32位机器为例

MemoryUnit = \frac{4\times1024\times1024\times1024}{2^{32}}=1Byte

这样我们就得到了最为常见的一个内存单元大小。

我们在以C语言为例,先介绍一下,笔者用的是Vs studio,Vs studio提供了两种架构来使用

  • X86 架构:X86 架构是一种 32 位或64位的指令集架构,它最初由 Intel 公司开发,并被广泛应用于个人计算机和服务器领域。X86 架构的处理器可以是 32 位的,也可以是 64 位的。在 32 位的处理器上运行的操作系统通常被称为 X86 操作系统。

  • X64 架构:X64 架构是一种 64 位的指令集架构,也被称为 AMD64 或 Intel 64。它是在 X86 架构的基础上扩展而来的,增加了对更大内存地址空间的支持。X64 架构的处理器只能是 64 位的。在 64 位的处理器上运行的操作系统通常被称为 X64 操作系统或者 64 位操作系统。

我将用地址的大小与bit位位数,来显示是32位机器还是64位机器,一个计算机有 n 位地址线,也就是地址有几个bit位

此时X86这个架构下,我用的是32位,此时地址为8*4=32bit,X64这个架构下我用的是64位,地址大小为8*8=64位。

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

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

相关文章

EasyRecovery数据恢复软件2024最新版包括Windows和Mac

EasyRecovery数据恢复软件适用于多种环境和使用场景。首先,它适用于各种操作系统,包括Windows和Mac。无论用户使用的是哪种操作系统,都可以使用该软件进行数据恢复。 其次,EasyRecovery支持从各种存储设备和媒介中恢复数据&#…

CleanMyMac X2024免费Mac电脑清理和优化工具

CleanMyMac X是一款专业的 Mac 清理和优化工具,它具备一系列强大的功能,可以帮助用户轻松管理和维护他们的 Mac 电脑。以下是一些关于 CleanMyMac X 的主要功能和特点: 智能清理:CleanMyMac X 能够智能识别并清理 Mac 上的无用文件…

WPF真入门教程30--顺风物流单据管理系统

1、教程回顾 到现在为止,真入门系列教程已完成了29刺由浅入深地讲解,当然不可能讲到了WPF的所有技能点,但读者看到了wpf的内部各种功能及之间的联系,在此基础上,提供一个完整有效的综合项目,本项目采用的是…

汽车虚拟仿真技术的实现、应用和未来

汽车虚拟仿真技术是一种利用计算机模拟汽车运行的技术,以实现对汽车行为的分析、评估和改进。汽车虚拟仿真技术是汽车工业中重要的开发设计和测试工具,可以大大缩短产品研发周期、降低研发成本和提高产品质量。本文将从汽车虚拟仿真技术的实现过程、应用…

Sora:云端启航

2024年2月16日,OpenAI发布了“文生视频”(text-to-video)的大模型工具,Sora(利用自然语言描述,生成视频)。王炸消息一出,全球都再次被OpenAI震撼了。AI视频的高度一下子被Sora拉高了…

【论文阅读】《Graph Neural Prompting with Large Language Models》

文章目录 0、基本信息1、研究动机2、创新点3、准备3.1、知识图谱3.2、多项选择问答3.3、提示词工程(prompt engineering) 4、具体实现4.1、提示LLMs用于问答4.2、子图检索4.3、Graph Neural Prompting4.3.1、GNN Encoder4.3.2、Cross-modality Pooling4.…

《无线网络技术》考试版笔记

第一章 无线网络介绍 什么是多径效应,如何去克服: 在发射机和接收机之间没有明显的直线路径时,就会产生多径传播。如果两个信号彼此叠加,那么接收设备就无法正确解调信号,无法还原为它的原始数据形式。 可以稍微调整接…

Android修行手册-Chaquopy中opencv、numpy的初步应用

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

Zookeeper3:客户端命令

文章目录 客户端命令连接服务端Zookeeper客户端内置命令 ls - 节点信息 客户端命令 连接服务端Zookeeper //客户端连接服务端zookeeper 默认连的本机2181端口的zookeeper cd /opt/module/zookeeper-3.9.1/bin && sh zkCli.sh//客户端连接远程服务端zookeeper cd /op…

缓存穿透解决方案之布隆过滤器

布隆过滤器可以快速判断数据是否存在,避免从数据库中查询数据是否存在,减轻数据库的压力 布隆过滤器是由一个初值为0的bit数组和N个哈希函数,可以用来快速的判断某个数据是否存在 当我们想要标记某个数据是否存在时,布隆过滤器会…

蓝桥杯Java B组历年真题(2013年-2019年)

一、2013年真题 1、世纪末的星期 使用日期类判断就行,这里使用LocalDate,也可以使用Calendar类 答案 2099 使用LocalDate import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 1:无需package // 2: 类名必须Main, 不可修改p…

day07_分类管理EasyExcel品牌管理

文章目录 1 分类管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 列表查询1.4.1 需求分析1.4.2 后端接口CategoryCategoryControllerCategoryServiceCategoryMapperCategoryMapper.xml 1.4.3 前端对接category.jscategory.vue 2 EasyExcel2.1 数据导入导出意义2.2 EasyExcel简介…

Vue3速成

文章目录 day 11. 创建vue3工程3. 响应式数据4. 计算属性 day 25. watch 监视6. watchEffect7. 标签的ref属性8. 回顾TS中的接口_泛型_自定义类型 day 1 1. 创建vue3工程 相关代码如下: ## 创建vue工程 npm create vuelastest## 安装node_modules npm install //…

nginx出现 “414 request-uri too large”

nginx出现 “414 request-uri too large” 1.修改传参方式 POST 2.字段能变成后端获取就自己获取,不用前端传 3.修改nginx配置,添加client_header_buffer_size 512k;large_client_header_buffers 4 512k;配置

【LeetCode】876_链表的中间结点_C

题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 https://leetcode.cn/problems/middle-of-the-linked-list/description/ 示例 提示&#xff1a; 链表的结点数范围是 [1, 100]1 <…

【leetcode】环形链表✚环形链表II

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1.环形链表解题拓展&#xff1a; 2.环形链表II 1.环形链表 点击查看题目 解题 思路: bool hasCycle…

MySQL篇—执行计划介绍(第二篇,总共三篇)

☘️博主介绍☘️&#xff1a; ✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux&#xff0c;也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章&#xff0c;并且也会默默的点赞收藏加关注❣…

零基础自学C语言|数据在内存中的存储

✈整数在内存中的存储 在讲解操作符的时候&#xff0c;我们就讲过了下面的内容&#xff1a; 整数的2进制表示方法有三种&#xff0c;即原码、反码和补码 三种表示方法均有符号位和数值位两部分&#xff0c;符号位都是用0表示"正"&#xff0c;用1表示"负"&…

Flex布局常见属性图解

目录 一、简介二、父元素属性2.1、flex-direction2.2、justify-content2.3、align-items2.4、flex-wrap2.5、flex-flow2.6、align-content 三、子元素属性3.1、flex3.2、align-self3.3、order 一、简介 Flex是Flexible Box的缩写&#xff0c;意为”弹性布局”&#xff0c;用来为…

mysql学习笔记3——授权操作

利用select查询数据库数据时&#xff0c;可以在后面加上参数 意为限制显示条数 对数据库进行远程操作时&#xff0c;为了避免不同用户操作混乱&#xff0c;要设置不同用户的权限&#xff0c;可以使用 具体格式为 其中*代表任意均可 &#xff0c;这里用户创建采用与授权同时进…