【转载】CPU架构、指令集与指令集体系结构(ISA)
最近学习计算机系统基础,了解到指令集体系结构。
对CPU架构、指令集和指令集体系结构的关系不清楚,特此记录。
指令集体系结构(ISA)包括 指令集、指令集编码、基本数据类型等。
CPU架构 实现了 指令集
------------------------------------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------------------------
下文转自http://blog.csdn.net/u010297957/article/details/49950643
作者:有且仅有
1. 指令集体系结构(Instruction-Set Architecture, ISA)
1.1 定义
一个处理器支持的指令和指令的字节级编码就是这个处理器的ISA,包括很多个部分:
- 指令集
- 指令集编码
- 基本数据类型
- 一组编程规范
- 寄存器
- 寻址模式
- 存储体系
- 异常事件处理
- 中断
- 外部I/O
不同的处理器家族,例如Intel IA32、IBM/Freescale PowerPC和ARM,都有不同的ISA。维基百科 - Architecture list
1.2 作用
- ISA在编译器编写者(CPU软件)和处理器设计人员(CPU硬件)之间提供了一个抽象层:
- 处理器设计者:依据ISA来设计处理器
- 处理器使用者(如:写编译器的牛*程序员):依据ISA就知道CPU选用的指令集,就知道自己可以使用哪些指令以及遵循哪些规范
- 定义处理器上的软件如何构建,这是ISA的最重要内涵,现代处理器都是支持高级语言编程、操作系统等等特性,ISA要定义出指令集内的指令是如何支撑起C语言里堆栈、过程调用,操作系统里异常、中断,多媒体平台里数字图像处理、3D加速等等。
1.3 TIPS
- 常见的一个误解的答案:指令集并不存储于CPU中,应该这样说:CPU本身是指令集(结构)的一个实现/实例;
- 一个ISA可能包含多个指令集;
2. ISA与微体系结构
ISA只是描述了CPU应该支持的每条指令是做什么事的,即指令的功能。而微体系结构是描述处理器实际上是怎么实现的。
2.1 微体系结构
微体系结构是计算机体系结构中偏向硬件的部分,它可以理解成数字电路如何实现处理器中的各个功能,通常关心的内容包括,指令的流水线结构,计算单元的电路(加法器等等),存储器的结构(寄存器堆、Cache的结构)等等 ;
一个实例如下:
1. 拿Intel来说,(其ISA是IA-32等)其pentium
4处理器的微体系结构是NetBurst,现代,其Core(酷睿)系列CPU的微体系结构已经经历了好几代:Bloomfield(2008年)、Lynnfield(2009年)、Clarksfield(2009年)、Ar
randale(2010年)、Gulftown(2010年)、Sandy Bridge(2011年)、Ivy
Bridge(2012年)、Haswell(2013年)、Haswell Devil’s
Canyon(2014年)、Broadwell(2015年)、Skylake(2015年)。
2. 拿ARM来说,(其ISA是ARMv7等)其微体系结构是ARM11等从11往后叫cortex系列,其中cortex-A系列有32位的A7、A9、A15,64位的A53、A57。
3. 指令集(Instruction set)
3.1 定义
通常会把CPU的扩展指令集称为”CPU的指令集”(因为基本的,类似加减的指令似乎是必须被CPU所支持的指令)。每款CPU在设计时就规定了一系列与其硬件电路相配合的指令集。
指令集可分为复杂指令集(CISC:sisk)和精简指令集(RISC:risk)两部分,这部分暂不继续讨论了。
Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single
instruction multiple data-Extensions
2)、SEE3和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。维基百科 - Comparison instruction set
3.2 指令
一条二进制机器指令由:指令码(操作码)+操作数组成。
- 操作码用来说明:指令的功能和执行的操作;
- 操作数说明:操作所涉及的源和目的数据的位置;
- 源:立即数(即指令中包含的常亮)、寄存器、存储器、I/O端口等;
一个流程
一个我思考出来的可能的流程是这样:
- CPU开发商
- 一个CPU厂商决定开发一个CPU,他们先要决定/选定一种指令集体系结构,他们当然不想自己开发,好了他们选用ARM的ARMv7;
- 那么该如何实现ARMv7呢?我们还是不去自己设计微体系结构了,还是用ARM公司配套的cortex吧,这样我们就能在硅晶片上做出一个CPU了;(当然中间省去了很多步骤)
- CPU使用者(开发一个C编译器)
- 这颗CPU可以运行什么样的指令呢?发现使用CPU使用的是ARMv7,那么就查看ARMv7的文档就好了,这是RISC的一种
- 编译器完成了,它的功能是:将C源代码编译为可以在ARMv7上执行的二进制命令代码,即目标文件
- 此时一个小程序员写了一段简单C程序test.c,我们调用编译器将test.c编译为ARMv7上的可执行文件test.o
- 目标文件中包含了程序怎么开始和结束执行、需要操作的数据、如何与操作系统交互等等。只要运行这个目标程序,CPU就能执行其中的指令了
【转载】CPU架构、指令集与指令集体系结构(ISA)的更多相关文章
- 手机CPU架构体系分类及各大厂商
手机cpu相关知识,这对于开发Android应用程序适应各个机型有一定的辅助作用 . 手机cpu架构体系分类 指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分,代表架构分别是x86.A ...
- 关于CPU 架构与指令集的一些个人理解
关于CPU 架构与指令集的一些个人理解 (理解不一定正确,只是目前的理解) 1.一般所说的X86,是指基于Intel X86架构处理器的一套指令集,即X86指令集: 2.CPU的架构是最底层的,是处理 ...
- 【转帖】超能课堂(186) CPU中的那些指令集都有什么用?
超能课堂(186)CPU中的那些指令集都有什么用? https://www.expreview.com/68615.html 不明觉厉 开始的地方 第一大类:基础运算类x86.x86-64及EM64T ...
- 让你分分钟读懂CPU架构及芯片厂商
CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分 不同类型CPU的重要标示.目前市面上的CPU指令集分类主要分有两大阵营,一个是intel.AMD为首的复杂指令集CPU ...
- 略谈cpu架构种类
一直对x86/i386/i686/x86_64这些东西感觉很不清楚,查些资料,解决部分问题,小记一番. Question1:什么是x86? x86或80x86是英特尔Intel首先开发制造的一种微处理 ...
- 嵌入式cpu架构
原文:http://www.kaixin001.com/repaste/11007221_7220618944.html### 内容: 目前主要CPU架构有ARM.X86/Atom.MIPS.Powe ...
- CPU架构:CPU架构详细介绍
1 概述 CPU架构是CPU商给CPU产品定的一个规范,主要目的是为了区分不同类型的CPU.目前市场上的CPU分类主要分有两大阵营,一个是intel.AMD为首的复杂指令集CPU,另一个是以IBM.A ...
- MySQL该使用哪种CPU架构服务器?
1. 摘要 近期,阿里云推出基于 ARM 架构的 RDS MySQL 和 RDS PostgreSQL 实例,现处于邀测阶段,阿里云宣传 ARM 架构的亮点是:在价格下降13%的基础上,平均性能 AR ...
- 几种CPU架构
原文链接:http://blog.csdn.net/wyzxg/article/details/5027738 这几天在下载RPM包的时候,总会看见x86,x86-64,IA64,i386,i586等 ...
随机推荐
- iOS的流畅性
1优先级别不同:iOS最先响应屏幕 优先级别不同:iOS最先响应屏幕 当我们使用iOS或者是Android手机时,第一步就是滑屏解锁找到相应程序点击进入.而这个时候往往是所有操控开始的第一步骤,iOS ...
- ZBrush国庆中秋大放价,优惠提前享!
没记错的话,上次的ZBrush活动应该是17年春节吧,悄么蔫地就把端午节等一系列节日忽略了,这让苦苦等待的小伙伴们情何以堪,这试用版用的也不得劲儿! 终于等到你,ZBrush官方消息称,17年中秋国庆 ...
- Layui Excle/csv数据导出
官方文档的数据是这样的 依赖 Layui 2.4版本以上 layui.use([ 'table'], function(){ var table=layui.table; table.exportFi ...
- 中山纪念中学培训杂题(难的都不在这里面qwq)
来中山纪中半个月了,差不多就要结束了, 写一些之前考试能更正的题解吧,还有一些不是给人做的(比如IOI2018互测.. 备注:我不会的就没有放上来了,所有数学有关的基本上都死了. 所以这里的题目都是相 ...
- tp框架,addAll方法报错,返回false
tp框架的批量添加addAll($data)方法很实用,但是注意,数据数组的数据结构要保持一致,不然会返回false.
- 分库代价高的情况下,如何优化ES解决亿级数据量检索
数据平台已迭代三个版本,从一开始遇到很多常见的难题,到现在终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的实现参考,但愿能帮助大家少走些弯路,在此篇幅中偏重于ElasticSearch的优化 ...
- Jquery-select元素操作方法
jQuery获取Select元素,并选择的Text和Value: $("#select_id").change(function(){//code...}); //为Select添 ...
- POJ 3904
第一道莫比乌斯反演的题. 建议参看http://www.isnowfy.com/mobius-inversion/ 摘其中部分 证明的话感觉写起来会比较诡异,大家意会吧说一下这个经典题目:令R(M,N ...
- MapReduce运行流程具体解释
在hadoop中.每一个mapreduce任务都会被初始化为一个Job. 每一个Job又能够分为两个阶段:map阶段和reduce阶段.这两个阶段分别用两个函数来表示,即map函数和reduce函数. ...
- 安装MYSQL错误“conflicts with file from package mysql-libs-*” 解决方法
安装MYSQL的时候时: 错误现象: [root@localhost opt]# rpm -ivh MySQL-server-5.5.32-1.el6.x86_64.rpm Preparing... ...