欢迎光临散文网 会员登陆 & 注册

为什么说ISA(指令集架构)是软件和硬件的最底层接口

2022-10-13 14:00 作者:papadogbl  | 我要投稿

这里强调最底层,是站在软件角度,相较于ABI和API说的。三者之间的关系如下图:

  • ISA -- Instruction Set Architecture -- 指令集体系结构;

  • ABI -- Application Binary Interface -- 应用程序二进制接口;

  • API -- Application Programming Interface -- 应用编程接口;

这里的API一般指的是OS的系统调用,和C语言里的库调用很像,只不过提供者不同,一个是OS提供,一个是C的动态库提供,你们后续学习Windows或Linux程序设计会接触。

ISA与CPU相关,如定义硬件能够直接识别的数据类型(主要是字,因为字节都是一样的8bits,但字不同,延伸的半字、双字就不一样了),寄存器(包括个数和大小),指令封装、定义,存储器编址方式,字节顺序等属于ISA范畴,ISA可以看成是硬件的调用接口,就像类里的public接口一样,他的通用寄存器属性是public的,专用寄存器是private的。硬件和软件是通的,很多方法和机理是一样的,一个CPU就是一个被封装起来的对象(这里说的封装是逻辑上的,不是制造工艺上的)。

ABI与OS、编译器、链接器、解释器和CPU相关,它一般涉及函数调用约定,如参数通过那些寄存器传送,函数返回值通过什么方式返回等,系统函数调用接口(如中断号),进程虚拟地址空间的划分等属于ABI范畴;

 API与OS和编程语言相关,高级语言的应用程序接口,如write,read等属于API范畴(例如,为了让操作系统调用接口标准化,出现了POSIX-Portable Operating System Interface标准)。

通过该图,你能看到计算机里的分层思想,分层本质上就是抽象、封装。指令集(ISA)相当于是对硬件的封装和抽象(这里可以类比软件的Class机制),让软件可以通过指令来使用硬件资源,这是硬件对自己的第一级保护,你只能通过它规定的方式(它的指令集)使用硬件,把需要对用户隔离的部分进行了保护。组成原理学的就是这个层以下的机制。

在学习中,一下从最上面的应用程序开发转到最下面的CPU、内存等这些硬件知识,有点晕是正常的,计算机这两头中间还有些东西(如编译、链接、装载、操作系统、库机制等等),要学中间这些东西,你必须对硬件有一定的了解,才能知道中间这些内容都在干什么、为什么要这么干,你在开发应用程序的时候才能做到不光知其然,还知其所以然。


为什么说ISA(指令集架构)是软件和硬件的最底层接口的评论 (共 条)

分享到微博请遵守国家法律