在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7546|回复: 19

我的处理器之路-----更新

[复制链接]
发表于 2016-10-30 16:35:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

   继上一次写感想已经一年多了,现在已经大四了,而且凭借着自己的知识积累和项目经验,在今年国庆前找到了处理器设计方面的工作。现在就在分享一下我从上次的分享到现在的经历吧。

   之前http://bbs.eetop.cn/thread-557991-1-1.html提到自己在阅读分析IVM(
Illinois  verilog model), 除了分支预测部分代码比较晦涩难懂之外,其他部分感觉还行。当时说想把Alpha ISA转化成mips ISA, 然后就去请教了学校里研究 高性能处理器微结构 的老师,经过交流发现自己的想法太simple了,这个想法没有什么价值。毕竟ILP开发都走到尽头了,只是把指令集变一下也没什么卵用啊,,,。老师说:“如果只是玩一玩,倒也没什么,但真想要有所收获,在这个基础上去研究多核去吧,毕竟现在是多核的时代”。(当然前提是理解了单核设计的基本原理)。

   时间到了15923日(大三上学期刚开学),得知一家处理器设计公司来我校招聘了,于是就去听宣讲会去了,期间跟招聘人员交流了一下,然后他推荐我:“去研究gem5(一款研究计算机体系结构的开源模拟器based C++ and python)的架构,搞清它的源代码,如果你都弄懂了,就凭那技术积累,毕业之后随便挑公司”。然后我就信了,刚返回宿舍就开始了阅读代码之旅,尽管刚开始不懂C++ python,但很快就去学习语言了,之后就开始阅读代码了。尽管到现在都没有读完所有代码,(因为知识和项目积累根本不够)但是我懂得了如何用C++来写模拟器,用 python来处理大量的仿真数据,而且这些技能肯定会用在以后的工作中的。与此同时开始通过 计算机体系结构:量化研究方法 学习多核处理器相关的知识了。

不知不觉时间到了2016年元旦之后,在eetop上下载了一本parallel computer architecture: a hardware software approach。这本书更加详细地讲解了多核设计的相关知识。随即将其列入寒假学习目录中。寒假期间通过与一位好友的聊天得知现在研发岗位要求比较严,不仅得有扎实的基础知识,还得有更好的项目经验,要不然本科生基本没有机会。而我的打算就是本科直接毕业,心想自己得做出点东西来,要不然在求职过程中没有竞争力。然后结合当时的情况,决定自己设计一个四核的处理器(灵感来自于MIT 复杂数字集成电路设计的一个学生的项目报告和当时正在学习parallel computer architecture: a hardware software approach以及CMU的并行计算架构课程https://users.ece.cmu.edu/~omutlu/ )。在积累了相关知识之后就开干了。当然一个人设计这个比较复杂的系统还是有点难度的,于是决定按设计流程走:1)根据学校实验室FPGA的开发板资源来决定cache大小;互联网络的fifo大小;分支预测器的各个参数:BTB tag bits , BTB entry number,

RAS 大小,PHT 的大小;然后利用gem5配置各模块参数(设计空间的探索),然后利用几个测试程序来跑仿真,最后根据性能结果来决定每个模块的具体参数;2)采用监听一致性协议还是目录一致性协议,感觉后者的实现更有意思便选择了后者;3)将MIT 2005年的6.823: Computer System Architecture课程中的协议进行改进便用到了我的项目中;4)将系统的架构进行划分,然后详细的弄清每个模块的具体实现(框图形式);5)开始编码。


201638,大三下学期开始了。第一个月学业负担还不算大,但不容忽视十门左右的专业课,还在接着寒假时的进度编码,调试。但过了一个月后发现课程已经跟不上了。只好暂时放下项目(最坏情况下可不能挂科吧,影响就业,还得补考)。之前提到我结识了一位老师他是我们EDA实验室的负责人,他得知我还在学习这方面的东西,还有这个项目,于是表示很支持。不久他就给我说他可以帮我申请一个项目,于是项目被批准了!

尽管暂且放下了项目,但我仍然在坚持听CMU的计算机体系结构课程(不得不佩服美帝的本科生课程的水平,很有深度!),然后从一个关于预取器的讲座中产生了自己的一个想法(被课程中一些实例启发到了,omutlu老师教的好!),随即借着gem5的基础,便开始着手基于gem5来验证自己的想法,因为它是模块化编程(C++的好处吧),只需实现自己的想法,熟悉一些接口就可以了。

等到了暑假,我便留校打算把多核处理器的项目做完。实际上编码,已经结束,剩下测试了,于是测了一个月,到快开学时各个核心可以独立工作,存储器模块可以独立工作,互联网络也可以独立 工作,但是当整个系统组织在一起时就出现问题了!!!然而没时间了,因为2017校招开始了!

其实投的简历也不少,但真正技术(处理器设计相关)对口的很少。然而很庆幸自己的知识积累和面试表现还可以,便获得了一份处理器设计相关的工作。当然面试过程中遇到了些问题:编译器及操作系统知识不是很熟。


现在以自己目前的水平来谈一下优秀的处理器架构设计师的知识要求:(备注为我的参考书)

自上而下: 操作系统----(操作系统:精髓与设计原理)

           计算机体系结构----(计算机体系结构:量化研究方法,optional:并行计算机体系结构:软硬件方法)

           计算机组成原理----(计算机组成与设计:硬件/软件 接口)

           数字集成电路----CMOS超大规模集成电路设计)


随着多线程/多核设计的发展,了解,甚至是熟悉操作系统是很有必要的。因为操作系统中进程与线程的创建,分配到核心/核心的一个线程(以SMT(同时多线程)为例)。如何平衡同一物理核心的单线程性能和多线程性能,什么时候由ST(single thread )转到SMT, 什么时候由SMT转到ST。以及在对多线程编程的程序进行仿真时的参数配置,配置方式,怎样看待仿真中的一些问题,没有操作系统知识,很容考虑不全面。

随着现在芯片设计对低功耗的考虑,而且随着工艺的发展,静态功耗的比例不断在增大,以及对线延时的考虑,这些要求我们在看待一个方案时要参考所采用工艺的功耗和延时的发展规律。而且我们应该意识到在架构级别的低功耗方案往往更容易得到更大的收益,例如从复杂高发射带宽的OOO处理器到现在的多个稍微简单的ooo处理器组成的多核处理器,后者的能效更高。

鄙人不才,只能写这么多了,大家凑合着看吧,有什么问题可以积极交流哦!

发表于 2016-11-5 10:06:47 | 显示全部楼层
lz,可否加个qq,也是我电的学CPU,我的qq: 2579576028.
发表于 2016-11-5 10:07:58 | 显示全部楼层
lz,可否加个qq,也是我电的学CPU,我的qq: 2579576028.
发表于 2016-11-5 22:45:49 | 显示全部楼层
非常感激分享,无意当中回头一看,貌似不牛其实已经走在了大神的路上,那我FPGA从业者,也欲转IC的工作,请教楼主一个问题,你在coursera看到的课程叫啥名字啊??我搜半天找不到。谢谢,感激不尽
 楼主| 发表于 2016-11-6 15:20:49 | 显示全部楼层
回复 4# zhanglingjv
computer architecture 普林斯顿大学另外这个也不错,
http://www.ece.cmu.edu/~ece447/s15/doku.php?id=schedule
发表于 2016-11-6 17:15:15 | 显示全部楼层
学习了,难怪我只是一个菜鸟
发表于 2016-11-7 15:36:06 | 显示全部楼层
不错,谢谢~
发表于 2016-11-10 11:01:50 | 显示全部楼层
回复 5# Romer


   谢谢,感激不尽,另外我的搜索能力还是超强的最终找到了你说的课程,David Wentzlaff's Computer Architecture,另外在看《operating-systems-internals-and-design-principles-8th》我就想从事IC设计,目前是FPGA工作不忙业余看看。很好
发表于 2016-11-16 06:59:24 | 显示全部楼层
不错啊啊啊啊
发表于 2017-12-30 15:33:04 | 显示全部楼层
很棒!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-21 16:58 , Processed in 0.089808 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表