每周报告2010.10.10刘彬本周学习的内容•1.对MIPS的指令系统进行了研读•2.温习了C++语言(没完事)•3.外文文献1.对MIPS指令系统的研读•指令是什么?•机器语言的单词就是指令,而单词表就是指令集。•MIPS指令的一些规定?•1.所有指令都是32位的•2.指令操作必须符合流水线•3.算术和逻辑操作都是三操作数的•4.32个寄存器,不会很多,所以速度快•5.寄存器0总是返回值0,编号为0的寄存器的助记符为zero寄存器·存储器·操作数·存取指令·偏移量•一。寄存器•有32个,$0~$31•$0不管存入什么,都返回0•$31被常规子程序调用指令JAL用来保存返回地址,是下一条指令的存储地址•每个寄存器都是32位的,即一个字的长度•二。存储器•又叫内存--,反正名字混乱还不统一--。•直接对内存变量进行算术运算会打乱流水线的顺序(具体为啥等研究明白流水线再说--),故要想从内存中读取数据,就必须使用数据传送指令把内存的数据传到寄存器,再进行操作。、•而数据传送指令在内存中的寻址方式是一个基址加上偏移量•基址怎么选在程序计数器那块再说•偏移量的话,涉及一个对齐限制问题,由于每个字的地址是以其内部的四个字节中的某一个的地址命名的,所以连续字相差4,MIPS是大端编址,故一定是4的倍数•三。存取指令•大名数据传送指令,lw取字sw存字•格式为:lw$t08($s3)•$t0目标寄存器•8偏移量要是按字节数的话,得数32•$s3基址里面存的是一个地址•Loadstore必须对齐内存操作只能加载经过数据类型转换后按地址对齐的数据•字节可以随意传送,但是半字必须按照偶字节传送(),字必须按照4字节边界传送•四。操作数•寄存器和存储器中存着的数据?三种指令格式•共同点,都是32位的•R型(运算,逻辑,小于置位等)•Op(6)rs(5)rt(5)rd(5)shamt(5)funct(6)•Op操作码•Rs第一个三原操作数寄存器•Rt第二个源操作数寄存器•Rd存放结果的目的操作数寄存器•Shamt偏移量•Funct函数码·····就是说明是加减乘除的吧•I型(立即数型分支型数据传输型)•Op(6)rs(5)rt(5)address或者立即数(16)•J型(跳转型)•Op(6)目标地址(26)几类指令•算术运算•数据传送•逻辑指令•条件分支•无条件跳转算数计算•加•Add$s1$s2$s3*********1=2+3•减•sub$s1$s2$s3*********1=2-3•立即加•Addi$s1$s2100*********1=2+100数据传送•上面已讲lwsw•还有存取半字存取字节等逻辑指令(都是按位的)•与(按位与)•And$s1$s2$s3**************1=2&3•或(按位或)•or$s1$s2$s3•或非•Nor$s1$s2$s3•立即数与•立即数或•逻辑左右移sllsrl•Sll$t0$s24*************把S2按位左移4位再存入$t0分支指令(有条件的向左走向右走)•相等则分支beq•Beqregister1register2L1•两个寄存器中的值相等时则跳转到L1•Bne不相等则分支无条件分支•J•由J和slt等可以很好实现whileif等•对于switch语句,用JR更好•JR是在寄存器跳转指令,如switch编出一个分支指令序列地址表,用JR来回跳就好了•JAL跳转并连接(一个过程指令)跳转到某个地址并同时将下一条指令的地址保存在寄存器中着重看了分支这块的寻址问题•先看JAL•跳转到某个地址并同时将下一条指令的地址保存在寄存器中•$ra,一个返回值寄存器,用于返回起始点•**PC指令地址寄存器保存当前运行的指令地址,•JAL指令将PC+4保存在$ra中,(疑问PC在哪?寄存器中?)跳转与分支的寻址比较•JJALJR都是直接把地址放置后面即可,但是条件分支只有16位用来存放跳刀的地址,只能找2的16次方个地址,明显不够,所以要用PC相对寻址的方式,16位只写分支地址就可以了•跳转的程序地址=(PC+4)+分支地址所有条件分支都是用PC相对寻址,而且注意分支地址是字地址,不是字节地址,跳转指令也是字地址举例•Loop:sll$t2,$s3,2•add$t1,$t1,$s6•lw$t0,o($t1)•bne$t0,$s5,Exit•addi$s3,$s3,1•jLoop•Exit:80000Sll001994080004Add0922903280008Lw3598080012Bne5821280016Addi81919180020J22000080024exit英文文献阅读•1.ReconfigurableProcessorArchitecturesforMobilePhones(应用于手机的可配置计算结构)•2.FieldProgrammableProcessorArray(FPPA)ReconfigurableComputing(可配置计算)forSpace(NASA)FieldProgrammableProcessorArray(FPPA)ReconfigurableComputing(可配置计算)forSpace(NASA)•现场可编程处理器阵列(FPPA)是一种为美国宇航局开发的高吞吐量,低功耗而且还耐辐射的片上处理数据流的可重构处理器芯片。其用了16个片上处理单元实现了同步数据流计算模型。•ItdiffersfromFieldProgrammableGateArraysinthatitisbuiltonacoarse-grainedarchitecturespecificallydesignedforarithmeticcomputing.Thisprovidesasignificantsavingininterconnectresourcesandconfigurationregisters.专门为算术运算结构设计了一个粗粒度架构,节省了互联资源和配置寄存器•Tomeettheradiationhardnessrequirementsofspacemissions,thechiphasbeenimplementedinaradiationtolerantstandardcelllibraryFPPA结构•该架构由四个簇,每簇有四个16位处理单元组成。每个处理单元可同时执行乘法与加法和逻辑运算,以及数据格式和条件的数据路径路径切换。每个PE还包含两个寄存器常量数据。该芯片的工作在16位整数数据路径,虽然PE内部的数据路径都是32位。处理单元之间支持多精度。该芯片具有5个16位可配置的数据I/O端口,分别标在图1为IOP4到IOP0。在右边是一个16位动态输出端口。动态输出端口的数据源可以在一个指令周期形成的基础上选择来自任何的PE。板载microsequencer执行运行时程序。八环寄存器支持硬件循环。数据路径中的每个位控制方案的数据处理单元(I/O端口或处理单元)“开火”。当一个节点开火后,它锁存到输入数据寄存器。Dataappearattheoutputofeachnodeinduecourse,从而实现一个阻塞读,而不是拦截编写程序模型软件支持•有一个FPPAsim来进行配置和仿真•Applicationdesignentrypresentsachallenge,astheFPPAimplementsahighlyconcurrentsynchronousdataflowpipeline,behaviorwhichisnoteasilydescribedinconventionalprocedurallanguageslikeC.Twoseparatedesignentrytoolsarebeingdeveloped:agraphicalsystembasedonSimulink[3],andanadaptationofSingleAssignmentC(SA-C)[6]•Simulink是个图形设计工具•SA-C特别之处有点不理解•Single-AssignmentC(SA-C,or“sassy”)isavariantoftheCprogramminglanguagewiththesingleassignmentrestriction,thatis,avariablecanonlybeassignedatonepointinaprogram.Thisconstraintavoidsdataaccessconflictswhichcanariseinaconcurrentarchitecture.OriginallydevelopedtoimplementreconfigurablecomputingonFieldProgrammableGateArrays8],SA-CisbeingadaptedtotheFPPA.2.ReconfigurableProcessorArchitecturesforMobilePhones•基本上是围绕XPP展开•在XPP的架构实现了一个新的运行时重新配置的数据处理技术,取代了由指令序列的配置与应用eXtremeProcessingPlatform-XPP•在XPP的架构是基于粗颗粒分层阵列,自适应计算单元也称为处理数组单元(PAES)和面向分组的通信网络。该XPP的技术实力源于阵列处理与独特的,强大的运行时重新配置机制的结合。因为配置控制是对数组中的几个嵌入式配置控制器(CMS)的分布,PAES可被并行快速配置,而邻近的PAES在同时却仍然可以用于处理数据。在阵列的不同部位整个应用可以独立的运行和配置。重构可以被外部触发,甚至可以在原本就在阵列内部的特殊事件信号触发。通过利用在硬件中实施的协议,数据和事件数据包用于加工,生成,分解和合并为数据流。与XPP的粗颗粒可配置架构有相似之处的像KressArray[21]或RAWMACHINE[22],这两者都是专门为流水线应用而设计的。XPP的主要特点是它的自动包处理机制和先进的分层配置协议。XPP的矩阵结构•一个XPP的装置包含一个或多个处理阵列集群(PACS),即PAE的矩形块。每个PAC是连接到一个CM,该CM是负责向PAC的配置单元写入配置数据。多-PAC的设备包含额外的CM用于配置数据,形成一个CMS的分层树。根CM是所谓的监督CM或SCM。在XPP的体系结构还用于一个并行芯片级联多台设备。一个CM由一个状态机和用于配置缓存的内部RAM。该PAC本身包含了一个配置总线是连接CM与PAEs和其他可配置对象。卧式总线进行数据和事件。它们可以被配置开关分割,并连接到PAEs和特别外围设备I/O。•典型PAE的图所示包含BREG(回寄存器)和一个FREG(向前寄存器)是作为垂直路由使用,以及一个ALU,执行实际的计算。。ALU落实执行共同的定点算术和逻辑操作以及一些特殊的三输入操作码像乘加,排序和计数器。由ALU生成的事件取决于ALU的结果或异常,非常类似于经典的微处理器的状态标志。一个计数器只有终止后才能例如,生成一个特殊的事件。另外的PAE实现是一个内存,可以用于FIFO模式或为RAM用于查找表等,但是,任何PAE的对象的功能可以被包含在XPP的架构3.2PacketHandlingandSynchronization•PAEobjectsasdefinedabovecommunicateviaapacketorientednetwork.Twotypesofpacketsaresentthroughthearray:datapacketsandeventpackets.Datapacketshaveauniformbitwidthspecifictothedevicetype.Innormaloperationmode,PAEobjectsareself-synchronizing.Anoperationisperformedassoonasallnecessarydat