DLX процессоры: RISC архитектурасы, оқу мақсатында жасалған, MIPS негізіндегі 32-биттік жүйе. ASPIDA және VAMP жүзеге асырулары бар. Компьютерлік архитектура.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
CPU архитектурасы
the CPU architecture
DLX (делюкс деп айтылады) – Джон Л. Хеннесси мен Дэвид А. Паттерсон жасаған RISC процессор архитектурасы, олар Стэнфорд MIPS және Беркли RISC жобаларының (сәйкесінше) негізгі авторлары, RISC дизайнының екі басты үлгісі (Беркли дизайнының атымен аталған). DLX, негізінен, тазартылған (және жаңартылған) қарапайым Stanford MIPS CPU болып табылады. DLX қарапайым 32 биттік жүктеу/сақтау архитектурасына ие, бұл қазіргі MIPS архитектуралы CPU-дан едәуір өзгеше. DLX басты назарда оқыту мақсатында жасалғандықтан, DLX дизайны университет деңгейіндегі компьютерлік архитектура курстарында кеңінен қолданылады. Екі белгілі "жұмсақ ядролы" аппараттық іске асыру бар: ASPIDA және VAMP. ASPIDA жобасы көптеген пайдалы мүмкіндіктерге ие ядроны құрады: ол ашық кодты, Wishbone-ды қолдайды, асинхронды дизайнға ие, бірнеше ISA-ны қолдайды және ASIC-те сынақтан өткен. VAMP – Verisoft жобасы аясында математикалық тұрғыдан тексерілген DLX нұсқасы. Ол PVS арқылы сипатталған, Verilog-та іске асырылған және Xilinx FPGA-да жұмыс істейді. Оның үстіне, компилятордан ядроға және TCP/IP-ге дейін толық жиын құрылды.
The DLX (pronounced "Deluxe") is a RISC processor architecture designed by John L. Hennessy and David A. Patterson, the principal designers of the Stanford MIPS and the Berkeley RISC designs (respectively), the two benchmark examples of RISC design (named after the Berkeley design). The DLX is essentially a cleaned up (and modernized) simplified Stanford MIPS CPU. The DLX has a simple 32 bit load/store architecture, somewhat unlike the modern MIPS architecture CPU. As the DLX was intended primarily for teaching purposes, the DLX design is widely used in university level computer architecture courses. There are two known "softcore" hardware implementations: ASPIDA and VAMP. The ASPIDA project resulted in a core with many nice features: it is open source, supports Wishbone, has an asynchronous design, supports multiple ISAs, and is ASIC proven. VAMP is a DLX variant that was mathematically verified as part of Verisoft project. It was specified with PVS, implemented in Verilog, and runs on a Xilinx FPGA. A full stack from compiler to kernel to TCP/IP was built on it.
Тарих
Стэнфорд MIPS архитектурасында өнімділікті арттыру үшін қолданылатын әдістердің бірі – барлық нұсқауларды бір сағат циклында орындауға мәжбүрлеу болды. Бұл компиляторларды, егер нұсқау орындалуы бір сағаттан артық уақыт алатын болса, "бос операциялар" енгізуге мәжбүр етті. Осылайша, кіріс-шығыс операциялары (мысалы, жадқа қол жеткізу) осы мінез-құлықты күшейтті, нәтижесінде бағдарламаның көлемі жасанды түрде ұлғайды. Жалпы, MIPS бағдарламалары көптеген пайдасыз NOP нұсқауларын қамтуға мәжбүр болды, бұл көзделмеген салдар болды. DLX архитектурасы нұсқауларды бір сағат циклында орындауға мәжбүрлемейді, сондықтан бұл мәселеден қорғалған. DLX жобасында ұзақ нұсқауларды өңдеуге қазіргі заманғы тәсіл қолданылды: деректерді алға жіберу және нұсқауларды қайта реттеу. Бұл жағдайда ұзақ нұсқаулар функционалдық бөлімдерінде "тоқтатылады", содан кейін олар аяқталуға дайын болғанда нұсқау ағынына қайта енгізіледі. Сырттан қарағанда, бұл жобалау мінез-құлқы орындалудың тікелей жүргендей көрінуін қамтамасыз етеді.
In the Stanford MIPS architecture, one of the methods used to gain performance was to force all instructions to complete in one clock cycle. This forced compilers to insert "no ops" in cases where the instruction would definitely take longer than one clock cycle. Thus input and output activities (like memory accesses) specifically forced this behaviour, leading to artificial program bloat. In general MIPS programs were forced to have a lot of wasteful NOP instructions, a behaviour that was an unintended consequence. The DLX architecture does not force single clock cycle execution, and is therefore immune to this problem. In the DLX design a more modern approach to handling long instructions was used: data forwarding and instruction reordering. In this case the longer instructions are "stalled" in their functional units, and then re inserted into the instruction stream when they can complete. Externally this design behaviour makes it appear as if execution had occurred linearly.
Қалай жұмыс істейді
DLX нұсқауларын үш типке бөлуге болады: R, I және J типтері. R типіндегі нұсқаулар – үш регистрлік сілтемесі бар таза регистрлік нұсқаулар, олар 32 биттік сөзде орналасқан. I типіндегі нұсқаулар екі регистрді көрсетеді және 16 бит бірден мәнді сақтауға пайдаланылады. Ал J типіндегі нұсқаулар – 26 биттік адресті қамтитын секіру нұсқаулары. Опкодтардың ұзындығы 6 бит, яғни барлығы 64 негізгі нұсқау бар. 32 регистрдің біреуін таңдау үшін 5 бит қажет. R типіндегі нұсқаулар үшін 32 биттік сөздің 21 биті ғана қолданылады, бұл төменгі 6 битті «қосымша нұсқаулар» ретінде пайдалануға мүмкіндік береді. Егер нұсқаулар тек регистрлермен жұмыс істейтін болса, DLX 64-тен астам нұсқауды қолдай алады. Бұл мүмкіндік, мысалы, FPU қолдау үшін пайдалы.
DLX instructions can be broken down into three types, R type, I type and J type. R type instructions are pure register instructions, with three register references contained in the 32 bit word. I type instructions specify two registers, and use 16 bits to hold an immediate value. Finally J type instructions are jumps, containing a 26 bit address. Opcodes are 6 bits long, for a total of 64 possible basic instructions. To select one of 32 registers 5 bits are needed. In the case of R type instructions this means that only 21 bits of the 32 bit word are used, which allows the lower 6 bits to be used as "extended instructions". The DLX can support more than 64 instructions, as long as those instructions work purely on registers. This quirk is useful for things like FPU support.