主体设计已完成,未来将会进行验证,完善说明文档。
本项目将从零开始,设计一套单核16位处理器。为此,我将自己设计一套全新的计算机指令集,代号“大黄鸭”;根据大黄鸭指令集,设计处理器内核,实现指令集的所有功能;为处理器布置必要的外设,如IO口;设计汇编器,让程序编写变得更友好。
1. 大黄鸭指令集设计
2. 大黄鸭处理器设计
3. 大黄鸭汇编器脚本
本项目开坑没有什么特殊原因纯属脑子一热。开坑前,我正沉迷于学习FPGA和计算机体系结构,研究各种指令集(RISC-V,MIPS,8051...),使用各种嵌入式处理器,移植tinyriscv,e203等各种开源处理器,甚至去看了看古董(川口三6205,经典8051)。
看了各种各样指令集架构,它们都有让我喜欢和感到变扭的地方,RISC-V简洁但有些操作不方便,51虽古老但有很多闪光点,等等。千奇百怪的处理器,我越看越入迷,越看越有灵感,同时,心中也不可抑制地产生了一种想法,那就是,我能不能自己设计一套指令集?
原本我觉得这想法很可笑,毕竟我才学了一年的verilog,水平不怎么样,写处理器如同蚂蚁想要推到大树一般自大而无畏。但是,我又觉得,或许可以尝试一下。不需要这个指令集有多么优秀,能够拳打ARM脚踢RV,只要合我心意,满足最基本的顺序、选择、循环结构,可以使用汇编编写指令,对我来说,就足够了。
我有个习惯,那就是从来不打没准备的仗。热血上头的那天晚上,横竖睡不着觉,脑子里不停构思指令集怎么设计,16位一条指令怎么分配,用哈佛还是冯诺依曼。慢慢的思考,大黄鸭指令集就如拨云见日,从模模糊糊到清晰可见;把脑子里构思的指令集一条一条写下来,我觉得我能看到希望了;根据指令集在脑子里切出个2级流水线,我觉得可以动手了;翻了翻verilog手册和计算机体系结构,我充满了信心。于是,开坑!!!
正所谓:工欲善其事,必先利其器。
8/16位指令
对指令空间同时读或写、对同一个寄存器写指令互斥。
具体见16指令表.xlsx
具体见16寄存器组.xlsx
编号 | 标识符 | 功能 |
---|---|---|
0 | ZE | 零寄存器 |
1 | DK | 运算寄存器 |
2-C | R0-RC | 通用寄存器 |
F | PC | 程序计数器 |
16位处理器单元,16位地址线,16位数据位宽,16个寄存器。
指令、数据空间必须且只能2字节对齐。
哈佛结构,指令地址与数据地址分离。
IO寄存器映射实现。
双发射,两条8位指令可并行执行。
2级流水线,发生跳转则使用空指令填充流水线。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )