因此,wdR指令需要和电源管理芯片里的看门狗定时器配合。
在执行wdR时,主控核心通过控制总线告诉电源管理芯片喂狗了,定时器清零。
最后是两条特殊指令SwI和RdtIm,前者是软件中断,用于系统调用。后者是读时钟,用于实时任务调度。
讨论完毕,吕辰在黑板上写完最后一行字,放下粉笔,转过身。
“48条指令,分配完毕。咱们来总结一下。”
“主控制核心,硬件实现40条高频指令,算术逻辑、分支跳转、数据传送、移位、位操作、系统控制、特殊指令中的SwI和RdtIm。冗余监控核心同上,2颗定点运算器,实现乘除法和移位操作,加速运算,存储模块……”
吕辰讲完,会议室里安静了几秒。
钱兰第一个开口:“吕辰,你把I/o指令和专用芯片的对应关系写成一张表,这个方法不错,以后写微程序的时候,程序员能查。”
曾祺赞同:“依我看,咱们得整理一个《I/o指令与芯片映射手册》,我看这个事,我来负责吧。”
诸葛彪问了一句:“那8条没有硬件化的低频指令,放在程序存储器里的微程序,谁来写?”
吕辰想了想:“这点事情不大,不用麻烦程序设计院,我拿去交给李师兄,这些没有硬件化的指令,最终都是要放进工业计算机的微程序库的。”
诸葛彪把烟掐灭在烟灰缸里,站起来伸了个懒腰。
“48条指令,40条硬件化,8条微程序模拟。分配完了,下一步干什么?”
吕辰看了看墙上的挂钟,已经快十二点了。
“下午开始,各小队根据指令集分配,修改《芯片功能规格说明书》。每一颗芯片,要明确列出它需要支持的指令、数据通路、控制接口。”
他看着台下:“三天之内,改完。然后开始逻辑设计。”
方案议定,吕辰等人进入了枯燥的设计工作当中。
这天一早,吕辰从厨房拿了两个馒头揣进兜里,推着自行车就出了门。
到了设计室,钱兰已经坐在桌前,面前摊着厚厚一沓稿纸,铅笔夹在耳朵上,正对着那张《精简指令集体系结构与编码表》发呆。
听见脚步声,抬起头,眼睛下面一圈青黑,显然昨晚也没睡好。
“钱师姐,这么早?”
钱兰揉了揉太阳穴:“48条指令分配到26颗芯片里,说是一句话的事,做起来全是问题。昨天晚上我翻了三个小时,发现好几个指令的执行路径在物理上根本走不通。”
她把稿纸转过来,指着上面用红笔圈出来的几处。
“你看这个LoAd指令,需要从内存读数据到寄存器。但咱们的存储控制器和主控制核心之间,数据总线只有8位。LoAd一次要两个周期,这还行。但问题是,如果连续LoAd,总线仲裁会冲突。我刚才算了一下,至少要加一个数据缓冲队列,不然指令流水线根本转不起来。”
吕辰凑过去看了两眼,眉头皱了起来。
“加缓冲队列,意味着控制核心的逻辑要改。本来已经定了40条硬件指令,现在为了这个队列,至少要多加两个状态。”
“所以我才头疼。”钱兰把铅笔拿下来,在纸上敲了敲,“不加,性能不达标;加了,面积超标、时序收不住。宋教授那边卡得严,五微米工艺下,核心芯片面积不能超过80平方毫米。”
正说着,走廊里传来一阵急促的脚步声。
诸葛彪推门进来,手里端着一个搪瓷缸子,嘴里叼着一根烟,头发乱得像鸡窝。
“你们也这么早?”他把搪瓷缸子往桌上一墩,表情严肃。
“10条I/o读写指令,数字量输入/输出芯片,8路输入、8路输出,光电隔离,响应时间1毫秒,这些都好办。但指令集里那个INS和oUtS,要连续读写一串数据。在芯片上怎么实现?是加dmA控制器,还是让主控核心一条一条搬?”
“一条一条搬太慢。”吕辰摇了摇头,“工业控制虽然不在乎那几微秒,但连续I/o的时候,如果每次都打断主控,整个系统的实时性就完了。我倾向于在I/o芯片内部加一个小状态机,支持自动地址递增和块传输。主控核心只需要发一条指令,剩下的活儿由芯片自己干。”
钱兰点头:“这个思路可行,状态机不复杂,几十个门就能搞定。而且以后升级也方便,换个状态机就行,不用改主控。”
诸葛彪想了想:“我试试,I/o芯片加快传输状态机,希望能行。”
正说着,曾祺也推门进来了。
他手里拿着厚厚一沓图纸,往桌上一放,图纸的边角都已经卷了,上面密密麻麻画满了门电路符号和连线。
他拉过一把椅子坐下:“我昨晚过了一遍板卡,发