内容中断随想录(risc cpu的那些事)
发一下牢骚和主题无关:
【 声明:版权所有,欢送转载,请勿用于商业用途。 联系信箱: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的帮助,这其中的权衡利弊还是挺多的。要学的货色很多,关键是把握基本,把握之后才能思考和分析。
文章结束给大家分享下程序员的一些笑话语录:
系统程序员
1、头皮经常发麻,在看见一个蓝色屏幕的时候比较明显,在屏幕上什幺都看不见的时候尤其明显;
2、乘电梯的时候总担心死机,并且在墙上找reset键;
3、指甲特别长,因为按F7到F12比较省力;
4、只要手里有东西,就不停地按,以为是Alt-F、S;
5、机箱从来不上盖子,以便判断硬盘是否在转;
6、经常莫名其妙地跟踪别人,手里不停按F10;
7、所有的接口都插上了硬盘,因此觉得26个字母不够;
8、一有空就念叨“下辈子不做程序员了”;
9、总是觉得9号以后是a号;
10、不怕病毒,但是很害怕自己的程序;
---------------------------------
原创文章 By
内容和中断
---------------------------------
内容中断随想录(risc cpu的那些事)的更多相关文章
- Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 转
硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能.现在的服务器上动不动就是多 CPU 多核. ...
- 把网卡中断绑定到CPU,最大化网卡的吞吐量(转)
先来看一下问题, 我们通过 ifconfig 查看接口的名称 为 p15p1, 一般机器为 eth0 再通过命令 ➜ ~ cat /proc/interrupts | head -n 1 && ...
- Intel 80x86 Linux Kernel Interrupt(中断)、Interrupt Priority、Interrupt nesting、Prohibit Things Whthin CPU In The Interrupt Off State
目录 . 引言 . Linux 中断的概念 . 中断处理流程 . Linux 中断相关的源代码分析 . Linux 硬件中断 . Linux 软中断 . 中断优先级 . CPU在关中断状态下编程要注意 ...
- CPU中断的工作原理,从最底层讲起
前言 中断的概念属于硬件层.虽然我们在进行软件编程时不会直接使用中断,但理解它对我们来说依然重要. 我们在使用线程切换及状态管理.异常处理.硬件与处理器的交互.I/O操作等指令时,中断都在默默的为我们 ...
- [Linux 性能调优] 网卡中断与CPU的绑定问题
在Linux的网络调优方面,如果你发现网络流量上不去,那么有一个方面需要去查一下:网卡处理网络请求的中断是否被绑定到单个CPU(或者说跟处理其它中断的是同一个CPU). 先说一下背景 网卡与操作系统的 ...
- 文件转移 互联网组成 路由器 分组交换 交换机 冲突域 网卡 数据帧的发送与接收会带来CPU开销 CPU中断 双网卡切换
https://zh.wikipedia.org/zh-cn/网段 在以太网环境中,一个网段其实也就是一个冲突域(碰撞域).同一网段中的设备共享(包括通过集线器等设备中转连接)同一物理总线,在这一总线 ...
- CPU处理多任务——中断与轮询方式比较
中断方式与轮询方式比较 中断的基本概念 程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相应的服务程序去处 ...
- 【基础知识】CPU上下文切换(进程上下文切换 - 线程上下文切换 - 中断上下文切换)
CPU 上下文切换是什么 CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器 ...
- 多CPU下基于e1000e驱动的数据包以及网卡中断流程分析.doc
http://wenku.baidu.com/link?url=mMKDH_fKmUXN7L6rANIFHjoHdKCYBLlDrqoYB1daDTEkNFk9Bt9xlJtS_4BKBj6w22WD ...
随机推荐
- WaitHandle、AutoResetEvent、ManualResetEvent
多线程中的锁系统(三)-WaitHandle.AutoResetEvent.ManualResetEvent 介绍 本章主要说下基于内核模式构造的线程同步方式,事件,信号量. 目录 一:理论 二:Wa ...
- 《MonkeyRunner原理剖析》第九章-MonkeyImage实现原理 - 第一节 - 关键类作用及关系
MonkeyRunner框架暴露了几个类的大量的API出去给用户编写脚本时候使用,其中最主要的三个就是: MonkeyDevice目标设备操作类,HierarchyViewer窗口界面对象操作类以及M ...
- PhpStorm创建Drupal模块项目开发教程(4)
编码器是一个检查和操纵代码的Drupal-specific工具. 探测器则是发现异常代码,通常被用于开发中的编码错误预警. 接下来将介绍编码器与探测器在PhpStorm中整合工作的各个步骤,实现PHP ...
- JTAG应该如何接线
下面是某个ARM9评估板的原理图: 注意: 1. Vref和Vtarget可以直接连在一起,由被调试板提供3.3V或5V电源: 2. nTRST,最好上拉: 3. TDI,最好上拉 4. TMS,最好 ...
- 自制 Word、Excel 批转 PDF 工具
原文:自制 Word.Excel 批转 PDF 工具 目前做金融业的项目,该公司每天会产生很多 Word.Excel 文档,需要大量地转换为 PDF,除了自己保存外,也要给金融主管机构作为备份.由于文 ...
- js 指定位置插入html标签(可编辑div)
demo效果如下: html代码部分如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- SDUTOJ 2054 双向链表
#include<iostream> #include<stdlib.h> using namespace std; typedef int ElemType; typedef ...
- iScroll 4.2.5 中文API
概况 资料来源 http://cubiq.org/iscroll-4 http://www.cnblogs.com/wanghun/archive/2012/10/17/2727416.html ht ...
- Android中的dp,px以及wrap_content的实际展示效果
因为一个效果中的图片设置了wrap_content的属性,但在720dp跟540dp上面显示不一致使老大非常恼火.跟他讲也讲不明白.于是乎让我们彼此测试来探个究竟.首先测试的是个图片: 它的物理像素是 ...
- VS2013全攻略(安装,技巧,快捷键,插件)!
工欲善其事,必先利其器.VS2013全攻略(安装,技巧,快捷键,插件)! 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥>承蒙大家喜爱和编辑推荐,在此 ...