• 请不要在回答技术问题时复制粘贴 AI 生成的内容
smallseven
V2EX  ›  程序员

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

  •  
  •   smallseven · Mar 8, 2019 · 9043 views
    This topic created in 2801 days ago, the information mentioned may be changed or developed.

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

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

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

    53 replies  •  2019-03-10 15:26:06 +08:00
    whypool
    whypool
    Mar 8, 2019
    1
    百度
    sdhzdmzzl
    sdhzdmzzl
    Mar 8, 2019❤️4
    2
    深入理解计算机系统。
    tcdh
    tcdh
    Mar 8, 2019
    3
    常识的话 CSAPP 就够了,CMU 出品,有书和视频教材。
    crackerJack
    crackerJack
    Mar 8, 2019 via Android
    4
    x 宝视频多的是,资料也多,几块钱买一堆
    undefined8
    undefined8
    Mar 8, 2019
    5
    买个 arm 开发板? 或者给 intel 的 cpu 手册通读一遍。。
    cdlixucd
    cdlixucd
    Mar 8, 2019 via Android
    6
    隔壁做开发的 快三十了 集显独显都搞不清
    wyce2007
    wyce2007
    Mar 8, 2019 via iPhone❤️2
    7
    编码:隐匿在计算机软硬件背后的语言
    从门电路原理开始讲起
    codechaser
    codechaser
    Mar 8, 2019 via Android
    8
    @wyce2007 这本书👍
    ftexplore
    ftexplore
    Mar 8, 2019
    9
    感觉没太大必要,如果是做纯软件的话,还是把精力放在数据结构算法上吧
    ReturnNull1
    ReturnNull1
    Mar 8, 2019
    10
    这样的话成本太大 主要是花的时间多 从底层开始的话 真的很费时间 所以 还是不要搞底层吧 除非你是专门想去做硬件
    wangshichang
    wangshichang
    Mar 8, 2019
    11
    不知道这个视频符不符合楼主的意思,今天刚看别人在 TG 分享的视频
    https://www.bilibili.com/video/av21376839
    efsg
    efsg
    Mar 8, 2019 via Android
    12
    @cdlixucd 我相信下载 xcode 都能中招的了
    cdlixucd
    cdlixucd
    Mar 8, 2019
    13
    @efsg 小白吧,关键是人家做了开发很多年了,都是高🐔工程师了 LOL
    abmin521
    abmin521
    Mar 8, 2019 via Android
    14
    @cdlixucd #13 我也不懂 我还不知道 i5 7 代 和 i7 5 代哪个好 丢人了
    Flasky
    Flasky
    Mar 8, 2019 via Android
    15
    可以去学一点单片机,寄存器的操作肯定能让你印象深刻
    Mohanson
    Mohanson
    Mar 8, 2019 via Android❤️1
    16
    https://github.com/mohanson/pywasm

    webassembly 虚拟机。可以从虚拟机再入手硬件,跨度不会这么大。
    Mohanson
    Mohanson
    Mar 8, 2019 via Android
    17
    最近我准备写 arm7tdmi cpu emulator,很好玩
    lrxiao
    lrxiao
    Mar 8, 2019
    18
    计算机架构 软硬件接口+量化研究方法
    没讲 GPU
    ppcoin
    ppcoin
    Mar 8, 2019 via Android
    19
    不如把手头的东西往死里搞。
    Cat73
    Cat73
    Mar 8, 2019
    20
    《计算机组成 结构化方法》
    我就看的这本
    Cbdy
    Cbdy
    Mar 8, 2019
    21
    CSAPP 挺科普的,可以去看看。我感觉做软件的话,更多的需要关注 OS
    Mistwave
    Mistwave
    Mar 8, 2019 via iPhone
    22
    CSAPP
    zhd173
    zhd173
    Mar 8, 2019
    26
    《 Code 编码:隐匿在计算机软硬件背后的语言》这本也灰常不错哦,比 CSAPP 简单些
    dxgfalcongbit
    dxgfalcongbit
    Mar 8, 2019
    27
    微机原理
    cdlixucd
    cdlixucd
    Mar 8, 2019 via Android
    28
    @abmin521 如果用户级别的肯定看功耗和计算能力吧 其他你还能看出啥
    henglinli
    henglinli
    Mar 8, 2019
    29
    曾經有這想法,但是放棄了.精力有限,盡量朝著少數甚至一個自己感興趣的方向學習才是正途.

    另外,個人認爲應該先學匯編.
    @Mirana 推薦的 osdev 也不錯,可以翻看.
    halfer53
    halfer53
    Mar 8, 2019
    30
    没必要,计算机有不同的领域,每个领域都能挖的很深。但每个人经历有限,不可能每个领域都钻研的很深,专注于你自己的领域做深就是最好的了
    pythondean
    pythondean
    Mar 8, 2019
    31
    @Cat73 小姐姐 73 年的吗
    ZiLong
    ZiLong
    Mar 8, 2019
    32
    @pythondean 有没有可能是 73 岁
    Cat73
    Cat73
    Mar 8, 2019
    33
    @pythondean @ZiLong 并不是,90 后
    fox0001
    fox0001
    Mar 8, 2019 via Android
    34
    不知道这个有没有帮助:中科大计算机课程资源
    https://mp.weixin.qq.com/s/Il56_X1pXuse_H-Njgyqfw
    yplam
    yplam
    Mar 8, 2019 via Android
    35
    简单的就弄个 stm32,至少可以知道寄存器,io 跟代码里变量的关系,中断,堆栈,任务切换原理
    硬核玩家就弄个低端 FPGA,自己去实现各种数字电路,译码器,寄存器,可以执行有限自定义指令集的 mcu
    rus4db
    rus4db
    Mar 8, 2019
    36
    楼主看来你也是科班出身啊……
    既然这样,我推荐《微处理器设计——从设计规划到工艺制造》
    https://book.douban.com/subject/3301308/
    是英特尔的工程师写的。
    既不过分简单,也不会过分纠结于某些细节,深入浅出,有 EECS 专业背景的人读起来应该很轻松。
    可以把它当成是数字电路+体系结构的复习书。
    koebehshian
    koebehshian
    Mar 8, 2019 via Android
    37
    如果模电数电真学会了,应该很容易理解计算机原理
    NEOXIN
    NEOXIN
    Mar 9, 2019 via Android
    38
    EEVBLOG 逼站有熟肉
    feather12315
    feather12315
    Mar 9, 2019 via Android
    39
    计算机系统结构:量化方法,做芯片的必读
    tempdban
    tempdban
    Mar 9, 2019 via Android
    40
    好说,搞一遍性能优化
    dartabe
    dartabe
    Mar 9, 2019
    41
    看下 arm 的基础结构就行了 做软件的把内存 中断看下就行了
    Justin13
    Justin13
    Mar 9, 2019 via Android
    42
    上 sicp。。。。
    mseasons
    mseasons
    Mar 9, 2019
    43
    你学过的这点东西,为啥还要偏科普的东西呀
    cherrycatz
    cherrycatz
    Mar 9, 2019
    44
    bilbili
    guanaco
    guanaco
    Mar 9, 2019 via iPhone
    45
    找个计算机 BIOS 的汇编源码读一下,如果能看懂的话
    Sunly
    Sunly
    Mar 9, 2019
    46
    我是从《编码:隐匿在计算机软硬件背后的语言》这本书开始看的,浅显易懂,很推荐
    kimi0
    kimi0
    Mar 9, 2019
    47
    如果是出于提升工作技能的目的,没必要
    我自己就是从硬件设计 /VERILOG 转过来做后端开发的,硬件的知识在工作中能用到的机会,为 0
    估计做操作系统 /driver 的组会有机会和硬件打交道吧,但一般也就限于 datasheet 这一层了,不会让你去搞明白上升沿 /时钟都是些什么玩意
    BingZ
    BingZ
    Mar 9, 2019
    48
    同样推荐 CSAPP,偏软。简单介绍必要的硬件概念,主要结合现代大型 OS 实现所需的相关内容进行讲解。这些对于上层应用级软件来说,足够了。真要深究,即然楼主有数模电基础,那就从 CPU 的实现入手。可以试试在 FPGA 上构建一个自己的 CPU。
    honeycomb
    honeycomb
    Mar 9, 2019 via Android
    49
    YouTube 有 eth zurich 的 computer architecture,由 onur mutlu 讲课
    xrshi
    xrshi
    Mar 9, 2019 via Android
    50
    minecraft 红石电路。四位和八位 cpu 都有教程。
    https://minecraft.gamepedia.com/Tutorials/Redstone_computers
    txy3000
    txy3000
    Mar 9, 2019 via Android
    51
    以前用 Verilog 写过一个五级流水线的 CPU 带条件预测 forward 你也可以尝试一下 xilinx 仿真的 一下就理解 MIPS 体系的 CPU 的原理了
    xieyudi
    xieyudi
    Mar 10, 2019 via Android
    52
    一步步来嘛。一方面是体系结构,另一方面是数字电路设计。

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

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

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

    我以前算是该软件的。最近也在找专门做 CPU 设计方面的工作。
    RingoTC
    RingoTC
    Mar 10, 2019
    53
    CSAPP 更适合软件工程师看。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1678 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 184ms · UTC 05:10 · PVG 13:10 · LAX 21:10 · JFK 00:10
    ♥ Do have faith in what you're doing.