求助:想了解学习硬件和计算机的底层原理

2019-03-08 09:38:52 +08:00
 smallseven

作为一个程序猿,不仅需要会 coding,还要对底层硬件有一些了解。平时我自己对硬件的东西关注不多,发现这是自己的短板,去除具体的实现原理,就连一些常见的硬件( CPU,GPU,存储器)常识都知之甚少,更别提一些其他的电路板,电子元件了。

所以希望各位 V 友可以推荐一些好的书籍,网站,blog,公号,视频等,适合学习了解计算机硬件的,科普常识也行。虽然这些东西可能需要时间去积累,但我希望可以将它作为一种兴趣爱好去了解学习更多。

注:本人学过数模电,数字逻辑,计组,体系结构。。。大家可以多推荐一些偏科普的。谢谢~

7117 次点击
所在节点    程序员
53 条回复
dartabe
2019-03-09 02:45:17 +08:00
看下 arm 的基础结构就行了 做软件的把内存 中断看下就行了
Justin13
2019-03-09 07:43:06 +08:00
上 sicp。。。。
mseasons
2019-03-09 08:05:30 +08:00
你学过的这点东西,为啥还要偏科普的东西呀
cherrycatz
2019-03-09 08:17:18 +08:00
bilbili
guanaco
2019-03-09 08:19:38 +08:00
找个计算机 BIOS 的汇编源码读一下,如果能看懂的话
Sunly
2019-03-09 08:26:06 +08:00
我是从《编码:隐匿在计算机软硬件背后的语言》这本书开始看的,浅显易懂,很推荐
kimi0
2019-03-09 08:40:41 +08:00
如果是出于提升工作技能的目的,没必要
我自己就是从硬件设计 /VERILOG 转过来做后端开发的,硬件的知识在工作中能用到的机会,为 0
估计做操作系统 /driver 的组会有机会和硬件打交道吧,但一般也就限于 datasheet 这一层了,不会让你去搞明白上升沿 /时钟都是些什么玩意
BingZ
2019-03-09 08:55:34 +08:00
同样推荐 CSAPP,偏软。简单介绍必要的硬件概念,主要结合现代大型 OS 实现所需的相关内容进行讲解。这些对于上层应用级软件来说,足够了。真要深究,即然楼主有数模电基础,那就从 CPU 的实现入手。可以试试在 FPGA 上构建一个自己的 CPU。
honeycomb
2019-03-09 08:58:01 +08:00
YouTube 有 eth zurich 的 computer architecture,由 onur mutlu 讲课
xrshi
2019-03-09 12:47:17 +08:00
minecraft 红石电路。四位和八位 cpu 都有教程。
https://minecraft.gamepedia.com/Tutorials/Redstone_computers
txy3000
2019-03-09 16:48:48 +08:00
以前用 Verilog 写过一个五级流水线的 CPU 带条件预测 forward 你也可以尝试一下 xilinx 仿真的 一下就理解 MIPS 体系的 CPU 的原理了
xieyudi
2019-03-10 11:38:15 +08:00
一步步来嘛。一方面是体系结构,另一方面是数字电路设计。

体系结构资料就是 Patterson 的那几本书,上面都给出了。CSAPP 还是有些偏软了。数字设计就是从学校里的电路,电子,到大规模集成电路,低功耗设计,etc.

从 FPGA 上实现 CPU 是个很好的路子。先实现一个教科书式的单个指令多个周期的那种。再上流水线,多发,乱序。还有缓存,TLB/MMU 这些也得慢慢上。我以前没事整天分析 Cortex-A55 /A75 的 RTL,本质上上还是那些东西。

能通过这个走完架构-设计验证-实现(综合,布局布线,时序分析那些)。等走完这个,差不多能转行了。。。

我以前算是该软件的。最近也在找专门做 CPU 设计方面的工作。
RingoTC
2019-03-10 15:26:06 +08:00
CSAPP 更适合软件工程师看。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/542362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX