RISC-V MCU中文社区

CPU的《长安十二时辰》是如何运行的?

分享于 2021-03-07 11:10:57
0
1908

  话说,2021年一天,临近假日,有大厂程序员却还在加班写代码调BUG,不由的对996福报心生愤懑,恰逢天降异象,火星冲日,这段代码时光倒流,反汇编印入简牍,成为一部有字天书;落入了长安皇城;

 

      当时恰逢大唐开源盛世,李隆基获得此天书,观星监告知天降祸事,圣人于是立马要求靖安司司丞李泌在《长安十二时辰》之内,解码此天书,否则提头来见;

 

 

 

      李泌心想,都是2021年的未来之人996孽气太重,导致火星冲日,天降祸书,与我何干;但转念一想,此事干系重大,如不破译,则996孽气降临长安,八水福地不见女儿欢笑颜色,六朝古都难觅男儿威武气魄。寰宇之内,帝国盛世不再,天灾人祸,谁又能置身事外,七尺男儿,岂可袖手旁观;遂决定要仔细参详此事;

 

        李泌看完天书,丝毫没有头绪,恰好,贺知章老师来访,于是与老师商议此事;老师说,此乃开源(开元)盛世,我手头有一部开源指令集,相赠于你,看能否解开此谜;,李泌打开一看,心下大喜,正是riscv开源指令集,于是豁然开朗;

 


      李泌通读一遍,心中粗略一算,已有丘壑,遂大喊一声:不如造一个未来人们所谓的中央处理器CPU,解码此天书,又有何难?我中华文化,博大精深,cpu不过是一个高级算盘而已,这段代码天书,我定要接出来,看究竟是在运行作何解释;

 

     贺老师问他,听闻未来的CPU都是芯片设计,用硅制成,我大唐尚无此科技树点成,如何制备;李泌道:如果长安城为整个片上系统(SOC),那么我靖安司就是整个长安城的CPU;老师请看整个系统舆图:如果按照需要解码此汇编天书,我靖安司制备一CPU:仅需5人足以,我靖安司就可以完成一个CPU的任务;由我李泌,檀棋,徐宾,姚汝能,张小敬,外加一算盘可也?贺老站在一旁,且看,李泌安排;

 

 

李泌的靖安司CPU设计任务,分工如下:

 

1:李泌:负责解码未来天书汇编,并且统一指挥所有人工作;

2:檀棋:负责保管32个箱子,每个箱子里面有一个数值;按照李泌的指令来把任意两个箱子里面数值传递给徐宾,将徐宾计算后的值再存入对应的箱子;

3:徐宾:负责按照李泌的要求,把檀棋传递来的两个值,通过算盘计算后,返回个檀棋;

4:姚汝能:负责给李泌找到未来天书(汇编),这些未来天书存储在皇城,需要姚每次给李泌来取;

5:张小敬:负责按照李泌的要求,把檀棋箱子里的数值传递到长安城的任意位置,或者将长安城的任意位置的数值找到放入檀棋相应的箱子;

按照开源指令集上的指令,李泌解码成功,准备输入CPU进行运算


     靖安司准备就位;CPU可以运作,大家十分紧张,看看这新组成的CPU大能不能运行这汇编天书;


 

      首先李泌开始解码第一条指令:


1步:姚汝能去皇城(指令存储区),把一条(0x104C)汇编天书取来(0x0005a783);给李泌;

2步:李泌解码

3步:李泌指挥张小敬,去太仓宫(数据存储区)是地址编号是a1的书简,果然是获取昨日东市存储的卖货金额;然后放到a4的箱子里面;张小敬就是出门上马,沿着朱雀大道一路狂奔,来到西市,拿到书简上的昨日的卖货金额,,然后一路狂奔回司,然后交给檀棋,放入a5的箱子;

 第一条指令执行完毕;

 

 

第二条指令:

第1步:姚汝能去皇城(指令存储区),按顺序取下一条(0x1050)汇编天书取来(0x00052703);给李泌;

第2步:李泌解码

第3步:后指挥张小敬,去东市地址是A1的摊位上,获取今天卖货的金额,然后放到a5的箱子里面;

 

第三条指令:

第1步:姚汝能去皇城(指令存储区),把下一条汇编天书取来(00e787b3);给李泌;

第2步:李泌解码;边对贺老说:老师且看,此句汇编天书,我已解读如下,

      0000_0000_1110_0111_1000_0111_1011_0011

       rs2=x14=a5;

       rs1=x15=a5;

       rd=x15=a5;

       opcode= 0110011 =add

    只不过是将两个通用寄存器的数值相加而已,所谓CPU,只不过做些小儿能做的事情罢了;贺老不住点头称是;

 

 

3步:李泌指挥,檀棋把a4,a5的箱子里面存贮的数值给徐宾;

第4步:徐宾用算盘把a4,a5的数值相加,把计算结果返回给檀棋;

第5步:檀棋把计算结果,存储到a5的箱子里面,覆盖原来的结果;

 

第四条指令:


第1步:姚汝能去皇城(指令存储区),把最后一条汇编天书取来(00f30053);给李泌;

第2步:李泌解码;

第3步:李泌指挥张小敬,把a5箱子里面的数值,在放入太仓宫a1地址的书简里面;

 

     运行完毕,李泌和贺老师拊掌大笑大笑,此乃雕虫小计;看来通过我靖安司的CPU的处理;这段天书就是要把今天东市售卖数量统计进去到太仓宫的总数里面去,这样可以获取最新的售卖数量;真是简单至极,看来未来21世纪的人类,其技术水平,也不过如此;

 

        装置即成,众人大喜,终于获知天书之意;不过是一段简单的C程序编译而已;


      听闻李泌已经破解,且已改造靖安司为CPU,圣人携左右来参观其原理,见靖安司众人,在李泌的指挥下,CPU运行井井有条,不仅大大称奇,啧啧赞叹,道,未来人的智慧也不过如此,李泌竟能在如此短时间内,制作出如此精良的靖安司CPU,破解天书,免去996孽报,真乃大唐得力干将也;所谓CPU是高科技,也不过如此而已;众人皆诺诺称是。

 

       圣人看檀棋生的俊俏,不由多看几眼,有见其抱着32个箱子,于是对李泌言道,为什么只有32个箱子,我大唐物博于天下,不能多准备些箱子吗?

 

       李泌解释说:这些箱子的学名叫做通用寄存器。未来人做设计CPU,通用寄存器一般是16个或者32个,因其是2的倍数,所以,更易于编码,如果做更多,比如64或者128个,也是可以的,但是其编码就需要更多的位数,例如目前32个通用寄存器,编码占用5bit,两个源,一个目的,就占用了15bit;,如果是64个或者128个,则就占用18bit或者21bit;占用更多的指令空间,陛下的书简就只能写更少的指令;如果更少,比如4个或者8个,那么,用于数值的暂存,就有些腾挪不开,需要频繁的访问靖安司外部存储区(例如太仓宫)。那就降低效率,所以综合来说,以32或者16为宜;

 

     李隆基不住点头,见李泌年龄不大,但是见识深厚,他日必为我大唐栋梁之才;

 

     站在一旁的右相李林甫见状,劈头便问道:你这个CPU运行一条指令,用时几何,李泌答道,约一炷香5分钟时间;

 

    右相说:我听闻,未来21世纪的CPU,每秒钟可以运行1G次甚至5G次,(1000 000 000次),你这个靖安思CPU,一炷香5分钟一次,效率太低;实在损伤我大唐颜面,另外,听闻未来CPU绝不像你这么粗鄙的做法,就类似圣人常做的曲水流觞,一殇未至,下一觞早出发已,圣人喝酒的精神,李司丞能领会吗?

 

     李泌心想,不就是还没有喝完,就再给下一杯酒吗,喝完,下一杯也到了,喝起来没完,这是嗜酒酒鬼的喝酒方法,此乃奸臣所为;回应道:流水(pipeline)的设计,也是容易的,就是,姚汝能在搬运指令后,交付给我,则可以取下一条指令了,我只管译码,接下来,檀棋根据译码结果输出箱子相应的数值徐宾,徐宾计算完毕,返回值到箱子中;这个pipeline的做法,也是寻常的;请圣人见图示所示;

 

 

 

         圣人,见图示,说,李泌果然能理解朕的曲水流觞之意;不错不错;

 

       李泌补充说:增加流水(pipeline)简单,但是增加频次这个仍要商榷,太仓宫与皇宫,东市皆在我靖安司外,姚汝能/张小敬快马驰骋朱雀大街,已是不易,如今增加频次,恐力不能逮;

 

        右相李林甫道:李司丞少年英才,必有办法;传元载设鼓与靖安司,每分钟一鼓,每鼓必要能够操作一条指令,这样靖安司CPU比可为我大唐解决算力低下的问题,以后东西市每天的卖货之数等等,不一而足,都要通过靖安司的CPU的计算后,记录于太仓宫中,可以清楚明白我大唐经济运行之趋势,为圣人决策分忧;

 

      李隆基听闻:心下大喜,道,右相不亏帝国柱石,每天右相所想之统计货物之算法,由贺之章贺老编制成指令天书,由靖安司负责执行;

     遂下旨:

          奉天承运,皇帝诏曰:

         为增加靖安司CPU效率;

       1:提升靖安司CPU的频率,每分钟执行一次指令,由元载监督敲鼓

       2:仿照圣人曲水流觞,增加靖安司的pipeline的流程;

         钦此

 

       旨意下完,圣人携左右满意而归,每天,右相李林甫产生众多统计想法,由贺之章贺老编制成指令天书交给靖安司CPU来完成,任务繁杂,靖安司再无宁日;

 

       一日,姚汝能和张小敬怨声载道,与李泌言道,靖安司离皇城,太仓,东西市,路程遥远,遂千里马也难1分钟往返,你作为译码人,在靖安司里面动动嘴即可,丝毫不费力,哪管我们死活,你上面动动嘴,我们下面跑断腿;这个工作实难完成;元载听了充耳不闻,仍然是不紧不慢的每分钟一次的敲鼓;李泌心下烦躁,一时语塞,众人正说着,贺之章贺老来访,李泌把大家的怨言赘述一遍,贺老说:我听闻,未来CPU亦有类似问题,有一法可解,李泌问道,如何能解,请贺老详细道来:

 

          在靖安司设置两个缓存处(cache)解决此事,一处为姚汝能所用,用于存储指令为(icache),另一处为张小敬所用,用于存储所取数据(dcache);


       这样,姚汝能可以一次取16条指令放入指令缓存处;(cache line是64字节);另外,张小敬也可以如法炮制,如果运气好,取东市的16个地址摊位的数据;这样16次计算只需要跑一次即可;两人听闻,心下大喜,终于可以得到片刻的休息了;

 

      除此之外,贺老和李泌商议,又新设置两个新的部分,分别在靖安司设置是指令和数据紧密存储区(ICCM/DCCM),这样贺老每天写的指令前4096条指令,直接放入靖安司指令紧密存储区(ICCM),免去了去皇宫搬移之苦,,同时,太仓宫的前4096个竹简的统计也可以直接放入靖安司数据紧密存储区(DCCM);只有这些之外的,才需要张小敬和姚汝能来取;


        靖安司CPU设置完毕,靖安司CPU运行开始,居然效率大大提升;张小敬和姚汝能也可以游刃有余的完成所任;

          

       多日后,圣人想起靖安司一事,差人前往观之,皆高效且井井有条,不由下旨称赞;右相不知其故,元载告之,右相恨恨不已;遂告圣人曰:靖安司处理游刃有余,现长安九门多货物来往,狼卫常携带火器来往,故需靖安司统计各门进出之物。可有效护卫长安安宁;圣人曰“大善”;自此以后,靖安司CPU业务日趋繁忙,工作997;众人繁忙终日,无暇休息;

 

   李泌心想,常言道:“为众人抱薪者,不可使其冻毙于风雪”,想我李泌设计靖安司CPU,解码天书,拯救长安于996于孽报,还大唐长安盛世,不想圣人竟把我给我安排997“福报”,每分每秒都成为都要为圣人卖力,变成CPU一部分,真是作茧自缚,作法自毙,自作孽不可活也,于是陷入深深的懊悔之中;(自此下令严禁后代学习此CPU技术,也不让徐宾记录在案,故年长日久,竟不为外人知晓,故中华之CPU技术淹没至今,一直落后于外国之故;996孽报害人不浅,需后人引以为鉴也,可惜:后人哀之而不鉴之,亦使后人而复哀后人也;此乃后话,暂且不提);

 

       话说一日,靖安司CPU众人正紧密运行统计安远门货物时,杨玉环杨真人怒气冲冲走了进来,预治罪众人;

 

             预知后事如何,请关注公众号:歪睿老哥


             CPU的《长安十二时辰》是如何运行的?第二季------望楼中断;


*免责声明:以上内容仅供交和流学习之用。如有任何疑问或异议,请留言与我们联系。
1908 0

你的回应
〃爱绘洅来な

〃爱绘洅来な 未通过实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板