【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

从消费电子的soc芯片来说,现在国内从事芯片设计的企业还是很多的,这其中有新岸线、瑞芯微、全志、炬力等等。一个完整的soc芯片其实包含了很多东西,比如说cpu核、总线、gpu核、gpio、timer、spi、i2c、i2s、video、sound等等。当然,这些核心,有的是买来的,比如说cpu核心,有的完全可以自己设计,比如说i2c、spi等等。目前消费电子的cpu一般还是以arm为主,电视机顶盒会采用一些mips核、一些交换机设备会使用powerpc核心、医疗设备上用coldfire系列的比较多、sparc芯片多用在sun服务器上。以上谈到的这些cpu其实都是risc cpu,也就是精简指令的cpu。

risc cpu有些共同的特征,比如说指令简单、数据和指令分开、指令对齐、通用指令和协处理器分开、中断模式简单等等。基本上,如果大家学会了一种risc的cpu,再学习其他的cpu就比较简单了。之前,risc cpu的种类很多,但是我们一直没有机会看到cpu究竟是怎么设计的。这种情况直到出现了opencores这个网站之后才有了改善。因为,网站上为我们提供了openrisc这种risc cpu的开源代码,我们才看到设计一个真正的cpu究竟需要做哪些工作。当然,凭良心而言,这份openrisc的代码还是比较简洁的,大家如果看一下sun的opensparc代码,就会明白我想表达的意思了。但是,openrisc虽小,常见的功能却不少,同时它具有gcc的工具链,而且已经移植到linux上了,还是非常值得我们学习的。

通过openrisc的内容,我们发现一个完整的cpu应该包括这些内容,

(01)mmu、tlb的处理;

(02)cache的处理;

(03)cpu 五级流水线的处理,即IF、ID、EXE、LS、WB的处理;

(04)pc地址的处理;

(05)中断的处理;

(06)timer处理;

(07)流水线freeze信号处理;

(08)电源管理处理;

(09)biu处理,即cpu和bus接口处理;

(10)其他内容等等。

大家如果熟悉arm体系结构的话,就会对上面的内容非常熟悉。最基本的cpu内容也就是这些东西。当然,现代cpu为了满足性能的需求,还会加入其他的一些内容,比如多cpu、流水线预测、cache同步、中断调度等等。软件与硬件打交道的方法其实就两种,汇编和中断。汇编指令帮助我们进行基本的运算、访存、读写外设寄存器、读写cpu状态寄存器、读写cpu控制寄存器,而中断就是外设与cpu打交道的方法。当然,从体系结构上说,poll和interrupt都是可以的,只不过中断效率好一点。数据传输也一样,总线到cpu、再到内存的传输方式太慢,人们因此有设计出了dma这一种数据传输方式。在cpu体系结构中,其实很多的设计都是有原因的。大家不光要熟悉这些技术,最好对相关的背景知识有进一步的了解。

再回到arm,基本的指令无非是加减乘除、移位、比较、跳转、中断返回、状态获取和保存、协处理器的设置和保存、利用io地址访存外设等等。内容不多,但是后面演绎的东西就多了,比如什么时候用rtos、上下文切换怎么弄、soc体系结构怎么和linux绑定在一起、选择cpu有什么讲究、host和device有什么分工、外设协议如何和cpu打交道等等。这里面的学问还是很大的。当然,新技术会不断出现,学习的唯一方法就是学习相关技术手册、访问官网、买设备试验等等。一般来说,中文资料总是会慢几拍,所以学好英文还是很重要的。

胡乱写了这么多,一来是自己的总结,二来是希望与大家分享一些自己的感受。对于通用的算法,理论上其实软件、硬件都能实现,软件用c编写,跑在cpu上;硬件用verilog编写,直接综合成门电路实现。就拿float运算来说,有些cpu就不支持,有些还需要外设的dsp的帮助,这其中的权衡利弊还是挺多的。要学的东西很多,关键是掌握基础,掌握之后才能思考和分析。

随想录(risc cpu的那些事)相关推荐

  1. 论5级流水32bit risc cpu设计

    前段时间用verilog写了一个32bit的risc cpu,五级流水,下板调试已经完全可用,准备后期加入浮点运算器,因为最近事情超级多,因此暂时先把RTL图传上来供大家参考,后面我会讲具体怎么设计. ...

  2. 基于 FPGA 的 RISC CPU 设计(2)详细的模块设计思路及其 Verilog 代码

    引言         其实,一个 CPU 的设计中,各个子模块都是比较基本的.比较简单的,只是组合起来的一个整体架构会比较复杂而已,无论是时序路径,还是数据通路和控制通路,这里,主要详细介绍整个微架构 ...

  3. CPU的那些事(带CPU电路图)

    http://pan.baidu.com/share/link?shareid=26813&uk=503419128 本文来源:pcpop CPU即中央处理器,它是一个电脑的核心部件,等同于人 ...

  4. 30年前竟是一家?Intel/AMD CPU的那些事

    原文链接: http://diy.pconline.com.cn/cpu/study_cpu/1207/2862888_all.html#content_page_8 1"史前年代" ...

  5. 随想录(cpu缓存、cache同步和乱序执行)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com]         以前学习计算机体系结构的时候,也会涉及到cpu缓存.多核和乱序方面的知识,但是 ...

  6. 嵌入式操作系统内核原理和开发(cpu的那些事)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] cpu是数字处理系统中的一个重要环节.在我看来,单片机.微处理器.dsp都可以称作是cpu,只 ...

  7. CPU底层那些事(goto的优势)

    底层看goto和for循环 goto真的消失了吗?其实并没有,他只是以另一种形式在存在而已. 从上述图片中,我们可以看到,for循环和goto的底层汇编指令完全相同. 总结 1.jmp这个指令,用来改 ...

  8. 自制 | 纯手工自制一个16位RISC架构CPU

    这周和大家分享的这个项目来自hackaday. 从创作的日志来看,这个项目从2018年底开始,一直到陆陆续续更新到前俩天. 一个耗时又有趣的项目. 项目的起因是,作者在学习了MITx的 "计 ...

  9. CPU GPU设计工作原理《转》

    我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...

最新文章

  1. 自学python有用吗-普通人学Python有用吗?学完能做什么?
  2. 两次备考信息系统项目管理师长篇心路历程附考试技巧
  3. RocketMq重试及消息不丢失机制
  4. 服务器证书在注册表上位置,服务器ssl证书注册表
  5. 地产IT人福利:帆软地产BI解决方案全解析
  6. 线上python课程一般多少钱-python学习费用多少合适
  7. Git(7):git撤销已经push到远端的commit
  8. 【毕业设计】基于stm32的示波器设计与实现 - 单片机 物联网
  9. Win系统 - 全屏看视频时任务栏没有自动隐藏怎么办?
  10. PSV卡套 换卡工具 下载及使用
  11. 用对象的上转型对象、方法重写,抽象编程:求柱体的体积。
  12. 国内 Top2 高校研一在读,为什么感觉深度学习越学越懵?
  13. shc/unshc工具用于加/解密shell脚本
  14. winfrom MonthCalendar的mousedown方法 获得 选择日期
  15. Mask to Polygons mask转Polygons并保存为labelMe json文件
  16. CSS实现登录表单毛玻璃效果
  17. 3D图像重建中的颜色预测误差研究
  18. Doxygen 使用说明
  19. 刘易远:如何提升自我赋能?
  20. js-前端video播放器

热门文章

  1. 自定义可扩展叠加头部的下拉控件
  2. 棋牌游戏服务器设计(1)
  3. Oracle移除表空间的数据文件 ora-00604 ora-01426
  4. 如何让nodejs在linux后台运行
  5. 将数据库中一张表中数据复制到另一张表
  6. HDU 4081 Qin Shi Huang's National Road System
  7. 反射(3)—动态、静态代理
  8. Ceph rbd cmd练习
  9. 一些简单的Linux命令
  10. 一个Web报表项目的性能分析和优化实践(七):性能监测工具JavaMelody