发新帖本帖赏金 10.00元(功能说明)我要提问
12
返回列表
打印

【matthew的业余DIY系列】我的CPU我作主

[复制链接]
楼主: matthewchan
手机看帖
扫描二维码
随时随地手机跟帖
21
matthewchan|  楼主 | 2016-3-21 12:26 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 matthewchan 于 2016-3-21 12:32 编辑

这两天没有更新文档。因为我在思考;P;P;P
文档可能会先停一下,因为近来我有新的想法了:lol。我想再做一个CPU,它能在后面的DIY项目中应用起来:lol。读写个SD卡,跑个ucos之类的系统,跑个GUI,跑个算法什么的,卡拉卡拉就能跑起来的:lol。
这时候,感觉现在这个简单CPU受编译器的影响太大了。因为要使用PIC的编译器,必须要有对应的器件,我自己加的扩展C编译器不认。现实是,PIC16F系列的器件,ROM和RAM都很少。。。。。
还有,代码效率密度有点低,xc8 bug还是太多了。。。

看了看ARM的 thumb-2,感觉很合适,有点心动了:lol



使用特权

评论回复
22
wangkj| | 2016-3-21 12:35 | 只看该作者
open core 很多

使用特权

评论回复
23
wu1169668869| | 2016-3-21 19:07 | 只看该作者
可是有什么用呢

使用特权

评论回复
24
matthewchan|  楼主 | 2016-3-23 09:23 | 只看该作者
本帖最后由 matthewchan 于 2016-3-23 09:28 编辑

昨天从ARM上面下载了ARMV6-M体系结构下来,基本浏览了一边。
我打算兼容他的thumb-2指令集,以便于使用C编译器。具体架构不会按它的体系结构来构建。总的来说还算好做,就是译码的工作量有点大(编写还要校对有点麻烦,仿真和测试会是个烦恼),其他还好了。
附件是体系文档,提供给有需要的朋友,免去了上官网注册的麻烦。
DDI0419C_arm_architecture_v6m_reference_manual.pdf (2.08 MB)




//////////////////////////////////////////////////////////////////////////////////////////////////////////////
上面有朋友说open core很多之类,估计是不好意思说,我做这些没啥用吧:L。

打个不恰当的比喻,九寨沟马尔代夫已经很多人去过了,还是有那么多人挤着去凑热闹啦。
纵然自己的相机业余,拍摄水平更一般,也还不忘带上相机去啊。
对我来说,这是经历,是体验,我高兴。或者,现在像我这么傻的人太少了吧。

版面好冷清,感觉自己有点自言自语。。。。;P



使用特权

评论回复
25
dickdick117| | 2016-3-23 11:05 | 只看该作者
这个有意思  我毕业设计也是类似的东西

使用特权

评论回复
26
matthewchan|  楼主 | 2016-3-25 08:10 | 只看该作者
说说进度吧。
把ARM M0的TRM和armv6-m体系结构对照着看了一遍。架构还是蛮简单直接的。
实现架构已经想好了,一些优化策略也基本定型了。下周一开始coding吧,慢慢玩,呵呵。

使用特权

评论回复
27
matthewchan|  楼主 | 2016-4-21 13:04 | 只看该作者
差不多一个月没上来,发现没有一个人关注,好桑心啊
做技术就是要耐得住寂寞的了

其实代码已经写完,面积和速度数据也有了。
在spartan 3上,面积 2300lut,速度70Mhz,与arm的官方数据相仿(cortex-m1在spartan 3上 2600lut,速度80MHz)。

老实说,不满意啊,我希望能做到100Mhz,2000lut左右,呵呵。
后面继续调整优化。




使用特权

评论回复
28
matthewchan|  楼主 | 2016-5-2 09:36 | 只看该作者
本帖最后由 matthewchan 于 2016-5-4 07:37 编辑

基本的testbench已经跑过了,看起来还不错。从架构和编程模型角度看,和ARM官方版本(cortex-M1)基本是一样的。区别/优化为:
1.只有一个sp,sp_main和sp_process是同一个寄存器。
2.apsr,ipsr,epsr给我直接合成xpsr了。
3.没有实现中断堆栈的8byte边界对齐保护,仅仅是4byte对齐(所以中断中需要调用必须遵循AAPCS的函数,就要靠码农手动一下了,呵呵)
4.对memory读写进行优化,效率比官方版本高。
5.加入简单的跳转预测,减少流水线空转,对最常用的BL和B跳转有明显加速作用。


性能上,在spartan 3上,使用xst,
               面积       速度
myCPU   : 1900lut   80Mhz.
cortex-M1:2600lut   80Mhz   (arm的官方数据 )


补充一下,编程模型基本都一样了,为什么就那么点不一样了? 理由有两点:
1.嫌麻烦,又觉得影响不大,所以懒得搞
2.简化编程模型,这是不是更像一个取代8/16位的低端高性能cpu啦,这才是最小的arm 32bit处理器吧(就是要搞点不一样

好吧,现在在慢吞吞debug模式中。。。

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则