CPU扫盲-CPU与指令集
创始人
2024-05-26 20:55:22
0

  指令集架构就像是特定的CPU的设计图纸,它规定了这个CPU需要支持那些指令、寄存器有那些状态以及输入输出模型。根据指令集结构的设计,在CPU上通过硬件电路进行实现,就得到了支持该指令集的CPU。指令集就像是我们编程语言中的接口,只定义规范和标准,不做具体的实现,同一个指令集架构可以有多种不同的实现方式,但只要是基于同一指令集架构的应用程序可以相互移植。所以我们上层应用只需要关注CPU的指令集架构即可,具体的CPU实现由厂商去关注。

  很多非开发的同学指令集名称与CPU名称分不清。这是因为一种 CPU 只能识别一种指令集,所以很多情况下 CPU 都以其支持的指令集名称来称呼,比如当我们要下载软件时通常关注的就是指令集的名称x86、ARM等,但是我们在买电脑时厂商备注的却是酷睿12代、龙芯3C5000、飞腾2000等,所以导致有的同学会把龙芯、飞腾、酷睿与x86、ARM搞混。这里的龙芯、飞腾、酷睿指的是CPU的名称,名字可以有CPU的厂商来取。而x86、ARM则是指令集的名称,基本都是由国外最早的几家处理器厂商创造并命名的如:x86是美国Intel公司、ARM是英国的ARM公司。

  CPU本身只是在块硅晶片上所集成的超大规模的集成电路,集成的晶体管数量可达到上亿个,是由非常先进复杂的制造工艺制造出来的,所以CPU的性能不仅仅受指令集的影响,相同的指令集下好的CPU厂商和差的CPU厂商制造出来的CPU性能也是天差地别的,如:苹果自研的m1芯片,使用的就是ARM指令集,但其性能吊打很多使用ARM指令集的CPU厂商(这个不得不承认)。

  相信大家也知道国内很多优秀CPU厂商如:long xin、fei teng、kun peng等,目前只有老大哥long xin自研了LoongArch指令集。为何其他厂商都选择走捷径采用的国外的指令集呢?指令集的创造真的那么难吗?虽然创造一套指令集并不容易,但也没有到望而却步的程度,真正难的是指令集背后的生态和推广。就像我自己可以发明一门语言,语言本身没什么问题,问题是我用自己发明的语言和别人交流,谁听得懂呢,谁又愿意去学这门语言呢?大家都很忙,不通用的东西没人愿意花精力去学。同一段机器指令010001110(随便写的),在A指令集下这组机器语言可能表示赋值,在B指令集下,这组机器语言可能表示循环,所以相同一段源代码,在不同指令集的编译器下,最终呈现的编译结果是不同的,虽然都是由01组成的二进制数字,但是长短和顺序是不同的,所以每个指令集都要有对应的编译器汇编器解释器(后文暂且统称编译器),编译后的汇编语言和机器语言是不能跨指令集使用的。试想如果要自立门户创造新的指令集,那有谁愿意给它写编译器呢?这可不是一个小工程,他要跟着指令集的迭代而迭代,也要自己不断的优化迭代,需要大量的人力成本和时间成本。即使自己完成了编译器,要知道每种指令集都有他自己的新特性以及一些特殊指令,不然也没必要重复造轮子,如果一些软件使用了ARM或者x86的特殊指令(一些内嵌汇编语言的软件,如:jvm的模版解释器就使用了汇编语言),那这些软件就要自己修改源代码来适配新的指令集,软件的开发程序员自然骂娘。所以自研指令集并不难,难的是如何推广,让大家用起来。这里要再吹一下老大哥long xin,long xin发布LoongArch指令集的同时,完成了针对GCC、LLVM、GoLang三大编译器的开发,完成了针对Java、JavaScript、.NET三大虚拟机的开发,使操作系统厂商和应用伙伴,可基于long xin的软件环境,更方便地开发应用。long xin为了能够更好的适应市场,也为了避免软件程序员骂娘,投入巨大成本完成ARM和x86指令集的二进制翻译工作,使运用了ARM和x86特性的软件也不用修改源码即可适配,但指令集翻译本身只是过渡的手段,为了增加用户群体,我相信随着long xin的独立软件生态逐渐强大,指令集翻译就会越来越边缘化,成为锦上添花之举。long xin的自研指令集也为全面国产化奠定了牢固的基础,在此也希望国内更多软件厂商能给与long xin支持,待到中华腾飞日,且让世界听龙吟

  至此CPU和指令集的关系已经讲解完毕,我们在下载软件时除了要选择指令集之外,还要选择32位还是64位如: * * * .x86_32、 * * *.x86_64,我们已经知道了x86代表的是指令集,那32位和64位是指什么呢?

  这里32 位和 64 位中的“位”就是bit,也叫字长,是指的是cpu一次能处理的数据的长度(也就是寄存器的位数)。这里有一个误区很多人一直认为32位和64位代表的是CPU地址总线引脚的数量,因为谈起32位和64位CPU的不同第一个想到的就是寻址空间不同,32位CPU最大可以寻址4GB的内存地址,64位CPU寻址范围可以远超4GB,而地址总线的数量对应着CPU的寻址能力(由于32位CPU地址总线引脚是32条,每根地址总线的状态只能是高电平或低电平,也就是只能是1或0。 所以32位地址总线一共有232种状态,每种状态代表一个内存地址,每个内存地址为1字节,所以232种状态一共可以表示4GB的内存地址),所以这个误区坑骗了很多人。在Intel x86指令集架构下的第一款CPU 80x86中,CPU是16位但地址引线却是20条,通过将段基址寄存器中段基地址左移4位再加段内偏移地址的方式实现了20位地址寻址,所以说32和64指的并不是地址总线的数量。至于为什么现在CPU不管是32位的还是64位其地址总线引脚数量都等于其位数,是因为现在不管是资源还是制造工艺都远胜当年,没必要因为几根地址总线再去做段基地址左移这种设计上的妥协,不然每次寻址前都要先做一次乘法对CPU的性能还是影响很大的。

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...