对于大多数同学来说,计算机或智能手机的运行似乎就像魔法一样神奇。你可能知道它们内部都是一些复杂的电子组件,比如CPU、内存等等,但这些组件是如何协同工作,让我们可以在电脑上打字,或者在手机上看视频呢?实际上,这一切都归功于一种名为"指令集"的神秘语言。今天,我们就一起揭开这种神秘语言的面纱,感受一下它的魅力所在。
指令集是计算机硬件和软件之间交互的桥梁,它定义了计算机硬件可以执行的操作,比如各种逻辑判断、数学运算。常见的指令集包括CISC、RISC、RISC-V等,它们其实是计算机CPU的各种设计思路。今天,我就来向大家详细解释一下这些概念。
CISC
首先,我们来聊聊CISC(复杂指令集计算机),也就是复杂指令集计算机。如果我们把计算机比作一个工厂,那么CISC就是那种拥有各种复杂机器设备的大工厂,每一台设备都能完成特定的复杂工作。x86系列的处理器一般都归属到CISC的范畴。
CISC指令集的设计初衷是为了最大限度地提高硬件的性能。为了提高性能,很多功能都是通过硬件电路来完成,也就是通过硬件实现各类指令。
CISC指令集的特点是指令长短不一:因为那时的内存很小,我们需要最大限度的保存更多的指令,所以指令的长度是可变的:常用指令短,不常用和复杂指令长一些。这就好比我们的大工厂里有各种大小不同的机器设备。
然而,随着技术的发展,CISC开始面临一些挑战和问题:
- 效率问题:CISC的指令集复杂,有些指令可能很少被使用,但是考虑到向前兼容性,厂商还是需要花费资源去实现和维护这些指令,这不仅浪费了宝贵的硅片空间,也使得处理器的设计更加复杂,降低CPU的性能和效率。这就好比我们大工厂里各种大小不同的机器设备需要各类不同的人才去维护、去协调生产计划。
- 热量问题:因为CISC的指令集复杂,处理器需要更多的硬件资源去执行这些指令,这会增加处理器的能耗;产生大量的热量,也需要更好的散热设备来保证处理器的稳定运行。
- 编译器优化问题:因为CISC的指令集复杂,编译器需要花费更多的时间和资源去优化代码,以提高程序的运行效率。
- 可扩展性问题:随着技术的发展,新的功能需求可能需要添加新的指令,但是对于已经很大的CISC指令集来说,添加新的指令会更加复杂。
因此,许多现代处理器开始转向RISC(Reduced Instruction Set Computer,精简指令集计算机)设计,以提高效率、降低能耗,并提供更好的可扩展性。
RISC
然后,我们来看看RISC,也就是精简指令集计算机。在20世纪70年代末,RISC开始出现。
这是因为人们发现CPU大部分时间都在使用少数的简单指令。同时因为内存大了,软件层面可以更复杂些,硬件可以更简单些,从而可以从吞吐量上提升CPU性能。
RISC的指令简单、定长,通过编译器实现简单指令的组合,完成复杂功能。这就像是把大工厂变成了流水线生产,每个工人只做一件简单的事情,但是大家协作起来,整体的效率却很高。
现在移动端流行的 ARM(Advanced RISC Machines)就是RISC的一种,不过它也融合了部分长指令、乱序执行、多发射等技术,所以它并不是单纯的RISC。就像我们的流水线上,虽然大部分工人都在做简单的工作,但是也有一些工人在做复杂的工作,以保证整个生产线的高效运转。
目前除了ARM公司生产的芯片,苹果的M1芯片、华为的麒麟芯片、小米的澎湃芯片、飞腾桌面处理器等,使用的也都是ARM指令集,不过对于国产芯片来说,ARM最新版本V9的指令集架构授权可能是个问题。
随着时间的推移,Intel和AMD两大巨头在x86中也借鉴了RISC的优化思路,他们考虑到向前兼容性,推出了微指令架构。这种架构下,编译出的指令还是原来的指令,但是在指令译码后变为了RISC风格的定长短指令。为了降低指令译码器的译码时间,CPU将翻译出的微指令存放到L0缓存中。
RISC-V
最后,我们来说说RISC-V。它是开源的RISC,可以说是CPU界的Linux。因为它是开源的,所以任何人都可以自由地使用和修改它,这也让它在全球范围内得到了广泛的应用,当然也可以用来解决我国芯片技术被卡脖子的问题,有望在未来成为主流的处理器架构。
RISC-V的技术特点主要包括以下几点:
- 开放和自由:RISC-V是开源的,任何人都可以自由地使用和修改,这极大地降低了开发成本。
- 简单和高效:RISC-V采用了RISC的设计理念,指令集简单、精简,易于实现,能有效提高处理器的性能和效率。
- 可扩展性:RISC-V具有很好的可扩展性,开发者可以根据需要,自由地添加自定义指令,以满足特定的应用需求。
RISC-V正在全球范围内得到越来越广泛的应用。许多知名的科技公司,如Google、阿里巴巴、华为、中科院计算所等,都在积极推进RISC-V的发展。比如:
- 阿里巴巴旗下的平头哥半导体已经推出了多款基于RISC-V架构的芯片,包括玄铁系列处理器,这些芯片在物联网、人工智能等领域有着广泛的应用。
- 中科院计算所在2023年6月发布了第二代开源高性能RISC-V处理器"香山",性能超过ARM Cortex-A76,采用中芯国际 14nm 工艺制造,目标频率是 2GHz,SPECCPU 分值达到 10 分 / GHz,支持双通道 DDR 内存以及 PCIe、USB、HDMI 等更多功能,为国内的芯片产业提供了新的选择和发展方向。
此外,许多开源硬件项目,如Arduino、Raspberry Pi等,也在考虑采用RISC-V。
龙芯
除了以上三大指令集,我们必须还得谈一下国产的龙芯,目前很多信创的项目也都在使用龙芯处理器。
龙芯是我国自主研发的通用处理器的品牌,最初也是由中科院计算所设计。早期的龙芯处理器使用的是MIPS指令集,但由于版权问题,后来的龙芯处理器使用的都是自主设计的指令集,称为龙芯指令集。
龙芯处理器不依赖于任何外部技术,保证了其安全性和自主性。其采用自主LoongISA指令系统,兼容MIPS指令,通过超标量技术实现高性能,可以同时执行多条指令,大大提升处理器的运行速度。
2010年,龙芯中科技术有限公司成立,开始市场化运作,旨在将龙芯处理器的研发成果产业化。就现状而言,龙芯处理器已经在多个领域得到应用,其出货量不断增加,但生态可能是其发展的制约因素。
尽管如此,龙芯处理器仍在不断优化和升级,提高性能和兼容性。龙芯对常见的开发平台和语言都提供了良好的支持。具体来说,龙芯支持Linux操作系统,可以在该平台上进行软件开发和调试。同时,龙芯还支持多种编程语言,如C、C++、Java、.NET、Go等,这些语言都可以在龙芯平台上进行编程和开发。此外,龙芯还提供了丰富的开发工具和库,如GCC编译器、GDB调试器等,以方便开发者进行软件开发和调试。
通过了解这些指令集的特点和历史,我们可以得到一些启示,这或许对我们的芯片发展有所借鉴意义。
- 首先是生态,CISC并没有在RISC出现后消亡,反而仍旧繁荣。这是因为x86架构出货很多,受到各种系统和应用软件的支持,也就是说生态做得好。
- 其次是创新,ARM抢占了移动端市场,这是因为手机的出现带来了对原有架构的挑战和新的机会。ARM的低功耗设计很好地支持了便携设备,而且它的架构和指令集授权策略得到了移动设备厂商的支持。
总的来说,各种指令集都有它们各自的优点和特性,它们的出现也都是为了更好地服务于人类的计算需求。了解这些指令集的原理和特性,对于我们理解计算机的运行机制也特别有意义。