cpu简述--指令集架构

     很多初级开发者其实都对cpu了解不多,个人兴趣原因想要了解一下cpu的相关知识,所以开几篇文章记录一下吧。
    2002年8月10日,中国科学院计算技术研究所的青年科学家胡伟武带领研制组,研制出我国首枚拥有自主知识产权的通用高性能微处理芯片——“龙芯一号”,结束了我国在通用CPU领域无芯片的历史。
    龙芯当时是做了什么样的创新,才能说是具有自主知识产权的芯片呢?为何2002年就已经有了自主知识产权的芯片,而到现在还致力于自主可控的国产cpu的开发?

处理器编程模型

    早期的处理器都是面向硬件编程,同一个软件换台型号不一样的电脑就不能用了。IBM为了解决这个麻烦,让软件能够在自家公司的不同电脑上通用,就提出了ISA(Instruction Set Architecture,指令集体系结构)这个概念,用来将硬件信息抽象化,然后我们的编程模型就成了下面这个样子。
处理器编程模型    之后开发人员面向ISA编程就可以了,开发的软件可以用在其他相同ISA架构的系统上。从程序员的角度看,ISA就是一套指令集和一些寄存器。
    举个例子,个人电脑经常用的Intel跟AMD两个处理器都是基于x86指令集的,所以我们的各种游戏软件,无论是你从AMD的机器换成了intel的机器,还是从i5到i7,都可以正常安装使用。而手机上的软件到了电脑上就不能用了,因为手机cpu大部分用的都是ARM指令集,基于ARM开发的软件到x86上当然跑不通。
    ISA出现之后,处理器的外部呈现和内部实现就分离开来了,被分为三个层次,如下图:
处理器系统层次    ISA常被称为架构(Architecture),是处理器的抽象描述。ISA在处理器中的实现成为微架构(Microarchitecture),如Intel和AMD都是x86架构但是使用不同的微架构。
    通俗点说ISA是设计规范,规定了处理能做什么,微架构是设计实现,描述处理器是怎么实现功能的,物理实现就是具体的实现过程,如20nm工艺,40nm工艺。以软件开发的角度来看的话,ISA就像是需求,微架构是设计,物理实现就是具体的代码。
    微架构一般也认为是内核。下图反映了指令集,微架构,处理器的关系。

指令集,微架构,处理器关系

指令集体系结构

    2009年龙芯取得MIPS架构授权。龙芯作为我国自主研发的处理器,我们都希望其能够实现完全自我创新,不被外界控制,然而最终还是不得不使用了现存的指令集。归根结底还是因为指令集的威力太过强大,指令集的强大之处在于他的背后是一个生态链。
    指令集就像一个语言(英语)一样,定义一套语言并不难,难得是让大家都去接受你的语言。如果重新使用一套指令集,与之相匹配的编译器,操作系统,各种应用软件都要重新编写,这里的工作量是巨大的,所以当时龙芯不得不使用了现存的指令集。
    当然,随着我国的不断发展,2020年,龙芯中科推出了自研指令系统LoongArch,LoongArch指令集包括基础架构部分和向量指令、虚拟化、二进制翻译等扩展部分,近2000条指令,并完全脱离了MIPS指令集体系。根据公司的规划,2024年将实现新架构产品的全面切换完成,不再销售基于MIPS指令系统的商业产品。

指令集是干嘛的?

    早期程序员都是使用汇编语言进行编码,然而众所周知,计算机只认识0,1,所以我们就需要一条规则去把汇编语言映射为0和1的机器语言。例如,add r0 r3 r2 为一条汇编指令,add为操作码后边为操作数,处理器公司对外发布的指令集手册就是使用汇编语言的形式。我们可以为每一个操作码和寄存器地址都赋予一种0和1的组合,以一种特定的长度为一组进行编码,最终就成了计算机认识的机器语言。(当然也可以使用变长的方式进行指令编码)。当cpu遇到这组01组合时就会按照规定的方式进行解码,拆分出操作码和操作数进行执行。

两种指令集

    早期程序员都是用汇编语言编程的,自然希望指令集中的指令数量越多越好,这也造成了指令数量越来越多。然而,社会80%的财富集中在20%的人手里。IBM的John Cocke证明这同样适用于指令集——20%的简单指令会被经常用到,占程序指令的80%,而其余20%的复杂指令则只占程序指令的20%。于是一些人开始重新设计指令集和处理器,只保留简单的指令,这样处理器就不用浪费大量晶体管去做哪些很复杂又很少使用的功能。
    世上本没有东汉西汉,只是后来人对他们的称呼罢了。指令集也是这样,由于新的指令集更精简,为了同之前的指令集作区分,使用新的指令集的计算机就叫做RISC(Reduced Instruction Set Computer,精简指令集计算机),相应的,之前的老的指令集就叫做CISC(Complex Instruction Set Computer,复杂指令集计算机)。
    早期 CPU,CISC 是主流,可以使用较少的指令来完成更多的操作。CISC 的主要特征为: 指令系统庞大,指令功能复杂,指令格式、寻址方式多; 绝大多数指令需多个机器周期完成; 各种指令都可访问存储器; 采用微程序控制; 设置专用寄存器、专用指令完成特定功能。
    限于 CISC 的复杂性,除 x86 外,基本上现代的指令集架构都选择了 RISC架构。RISC的主要特征为:统一指令编码,精简了指令数目和寻址方式,可快速解译; 大量采用寄存器操作指令,使指令系统更为简洁;复杂寻址模式以简单计算指令序列取代; 采用高效的流水线操作,提高数据处理和指令的速度; 指令格式的规格化和简单化。RISC 指令集实现更容易,指令并行执行程度更好,编译器的效率更高,能够以更快的速度执行操作。。。。。。。2020国产嵌入式处理器发展综述。。。。。。

几种指令架构介绍

x86

    不管喜不喜欢,x86都是指令集中的巨无霸。几乎所有个人计算机都在使用x86架构的计算机,如intel和AMD。在RISC兴起的时候,intel也尝试做RISC,但由于兼容性问题当时的市场并不买账。于是后来intel提出了一种类RISC的内核,采用 micro-op模式进行翻译,将x86的指令解码为类RISC指令后由RISC内核执行,到目前为止x86使用的仍旧是这种处理器结构。

ARM

    X86和ARM可谓是处理器上两个最成功的架构,一个霸占了个人计算机,一个则牢牢的抓住了手机市场。ARM之所以如此成功,是因为他一开始就将低功耗,低成本的优先级放在了高性能前面,所以在与x86残酷的市场竞争中存活下来并逐渐壮大。
    ARM公司自己不生产芯片,而是向半导体公司提供指令集授权,内核授权,其他公司使用ARM的处理器内核设计生产自己的处理器芯片。华为麒麟处理器、苹果的A系列处理器、高通骁龙处理器无一例外的采用了ARM架构。当美国禁售令颁布以来,ARM中断了与华为业务的往来,华为的麒麟,凌霄处理器均无法拿到最新的架构授权,发展都收到了相应的影响。

MIPS

    MIPS 架构也被称为最遵守RISC设计准则的一种架构。MIPS全称为无内部互锁流水级的微处理器 ( Microprocessor without Interlocked Piped Stages)。MIPS 与当前商业化最成功的 ARM 架构相比具有以下优势:有专门的除法器,可以执行除法指令。MIPS 的内核寄存器比 ARM 多一倍,在同样的性能下功耗会比 ARM 更低,同样功耗下性能比 ARM 更高。MIPS 指令比ARM 更多,执行部分运算更为灵活。MIPS 在架构授权方面更为开放,允许授权商自行更改设计。。。。。2018中国国产化处理器进展综述。。。。
    但由于之前MIPS长期以来侧重于高性能,面向服务器和工作站市场,收到了x86的猛烈冲击,等他回头做低功耗时,已经无法撼动ARM在嵌入式中的地位了。目前MIPS公司商业模式与ARM类似,通过出售指令集授权和处理器内核授权盈利。

Alpha

    Alpha 是 RISC 处理器中最快的一种,而且是唯一得到 WindowsNT 继续支持的 RISC 处理器。在2001年Alpha就被宣布放弃,之后江南计算所就购买了alpha所有资料,基于这个基础开发了一代代的申威处理器。

国产芯片发展以及使用的架构

    现在国产化趋势越来越明显,中国对自己完全自主可控的芯片需求也越来越高,所以这里还是了解一下国产的一些比较成熟的处理器所使用的体系结构以及发展现状。

最早使用ARM架构的国产CPU——飞腾

    飞腾处理器是由国防科学技术大学自主研发的高性能处理器。2014年飞腾在天津成立,公司先使用SPARC架构,而后迅速转向Arm架构,2014 年获得 ARMv8 架构的永久授权,自主研发微内核,提供了对 ARMv8 架构的良好兼容。在2015年3月发布了第一款面向PC和服务器的Arm核CPU芯片。
    “飞腾-1000”CPU,成功应用于我国第一台千万亿次服务器“天河 1 号”;“飞腾-1500”CPU 应用于超级计算机天河二号,在2012-2015年间超级计算机TOP500榜单中排名第一。

最早拥有自主知识产权的国产CPU——龙芯

    2002年8月10日,中国科学院计算技术研究所的青年科学家胡伟武带领研制组,研制出我国首枚拥有自主知识产权的通用高性能微处理芯片——“龙芯一号”,结束了我国在通用CPU领域无芯片的历史。龙芯公司在获得 MIPS 授权后,先后研制了 LS2 /LS3 等通用 CPU。在消化吸收的基础上,推出了自主兼容LoongArch 指令集,该指令集完全兼容 MIPS,融合了 x86、ARM、RISC-V 等指令系统的主要功能,生态不断完善。龙芯处理器分为小中大( 龙芯 1、2、3) 3 个系列,分别面向低端嵌入式、高端嵌入式/低端桌面、桌面/服务器 3 个应用领域。在嵌入式通用处理器系列中,龙芯 LS2K1000 已经广泛应用于高性能嵌入式计算机中。面向桌面和高端嵌入式应用,龙芯研发了第三代多核龙芯处理器 LS3A4000。龙芯有一个特点,就是核心 IP 都是自己做。针对生态建设道路,做 CPU 没有生态是不行的,比如现在很热的机器学习,如果只是单个的芯片肯定活不长,必须建设芯片生态。

唯一基于Alpha架构的国产CPU-申威

    江 南 计 算 技 术 研 究 所 研 发 的 申 威 处 理 器 源 自于 DEC 的 Alpha 21164 , 采 用 基 于 RISC 的自 主 指 令 集 、Alpha 架构,具 有 自 主 知 识 产 权 ,代表性应用为申威太湖之光,在2016-2017年为世界超级计算机排名榜单TOP500第一名。申威系列 CPU 的指令集是基于 Alpha 进行扩展的,技术来源是 Alpha 21164。目前 Alpha 的指令集和微结构都已不再更新,技术专利大多已过期或快过期。申威是 Alpha 阵营中仅存的硕果,但拥有自己的指令集、微结构、CPU、编译器和操作系统。

参考文献:
《国产嵌入式处理器发展综述》 邓豹,孙靖国 2020
《中国高端处理器芯片的发展战略分析》 魏肖 2017
《主流处理器体系结构与架构发展现状综述》寇晓斌 ,杨 琴 ,王亮亮 2014
《大话处理器》万木杨
《国产处理器研究与发展现状综述》芮雪 ,王亮亮 ,杨琴 2014

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值