文章目录
指令系统
定义
指令系统是计算机功能的抽象模型(不仅仅是关于指令功能的编码)
> 是软硬件的界面,所有软件最终都以指令的形式运行
> 体现了结构设计者对应用的深刻理解
> 一个指令系统可以有多种实现(低功耗、高性能、软件模拟…)
作用
(承上启下)是软硬件的交互接口
重要性
计算机产业的枢纽,产业生态的基础
①指令系统是计算机软硬件的重要标准:
-决定应用程序的二进制兼容(Wintel和AA都做到)
-是操作系统二进制兼容(Wintel做到、AA没做到)的重要因素
②指令系统影响系统性能和实现复杂性等:
-如RISC/CISC,32位/64位,媒体指令,向量指令等
-微结构对系统复杂性影响更大
国际主流指令系统
(1)三大主流指令系统:X86、ARM、MIPS
-X86:每年几亿片,垄断PC和服务器市场,虽受到ARM的一些威胁,但桌面的垄断地位难以动摇,并通过凌动阻止ARM向高端渗透
-ARM:每年50-100亿片,在手持终端市场处于垄断地位,成功侵蚀MIPS的数字电视、机顶盒等市场,试图在云服务器等领域与X86竞争
-MIPS:每年5-10亿片,在传统市场如打印机、网络等仍有一定势力
(2)其他指令系统
-PowerPC:在汽车电子、工控、服务器领域还有一线生机
-Alpha、PA-RISC、Sparc、IA64主流市场机会不大
-RISC-V(开源指令集):想成为CPU中的Linux,道阻且长,巨头联手逼向低端MCU
发展
(1)历史发展历程
-X86位宽从8位、16位、32位、64位不断发展
-功能从只支持定点、到浮点、到媒体指令、到向量指令
-向量指令又经历了MMX、SSE、SSE2、SSE3、SSE4、AVX等
(2)对指令发展新的要求
-多核结构要求指令增加对多核同步、通信和数据一致性的支持
-向量部件需要指令系统增加专门的向量指令
-媒体类应用要求指令系统增加对媒体编解码的专门支持
-云计算要求指令系统增加对虚拟机的支持;等等
自主软硬件需求自主指令系统
(1)现状
①国外垄断企业设置了严密的知识产权壁垒,主要体现在包括指令系统在内的各类接口中
②目前IT产业正从单极化向多极化发展,要抓住机遇。目前自主软硬件推进效果明显,但我国软硬件力量过于薄弱,通过统一的自主指令系统可以迅速形成合力
(2)自主指令系统发展的可行路径
①先兼容后自主
-与国外指令兼容(MIPS、RISC等),在此基础上自主发展
-“可控”权:自主扩展和自主再授权
-“对等”权:协商扩展和反向授权
②先自主后兼容
-通过二进制翻译方式,运行主流指令系统的软件
-如Transmeta,IA64上运行IA32程序等
-Intel推出的基于X86的智能手机能运行Android上ARM的应用
③二者结合
-如基于MIPS/RISC5,并通过扩展实现对X86和ARM的兼容
(3)指令系统示意图
指令系统的设计
指令系统在计算机中的位置
①软硬件的界面;
②反映了结构设计者对计算机系统的认识;
设计原则
-兼容性:对软件的包容性,长时间保持不变,如X86
-通用性:对软件的易用性,编译器和程序员觉得好用
-高效性:对硬件的易用性,便于CPU设计优化和不同性能的实现
-安全性:对软硬件安全的支持,支持通用操作系统,考虑不同的安全要求
影响指令系统设计的因素:
(1)工艺技术
①. 早期的硬件昂贵,指令系统设计主要考虑如何减少硬件;
②. 集成度的提高(TLB、从32位到64位、SIMD媒体运算);
③. 现在如何发挥存储层次的效率,如何利用芯片面积;
-CPU与存储器的速度差距,指令系统应能较好地利用存储层次,如通过并行或流水容忍延迟(Cache管理指令、预取指令)
-工艺进一步发展,主频极限和功耗问题引起的多核结构需要特殊指令支持(多线程管理和同步)
(2)系统结构
-指令系统本身是系统结构发展的结果,如:从16位、到32位、到64位;SIMD指令、从单核到多核等
-指令系统的兼容性要求与系统结构发展的矛盾关系:
尽量不改变指令系统的前提下提高性能,如流水、多发射等
尽量保持兼容,如Intel的做法
-增加指令功能还是提高主频?(RISC vs. CISC vs. VLIW)
-并行性: SIMD、向量、多发射(兼容性好)
(3)操作系统
-操作系统专用的核心态指令和运行环境;
-多进程支持、虚空间:(页表与TLB的关系;页保护:读写权限)
-系统安全等级:(核心态和用户态管理)
-异常和中断处理(异常处理入口、ERET指令等)
-访存和访问I/O的区别;
-虚拟机:(支持多操作系统的快速切换)
(4)编译技术与程序设计语言
-指令是编译器的工作结果
早期的指令系统主要考虑如何便于编程