首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
smallseven
V2EX  ›  程序员

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

  •  
  •   smallseven · 316 天前 · 4690 次点击
    这是一个创建于 316 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

    我以前算是该软件的。最近也在找专门做 CPU 设计方面的工作。
    RingoTC
        53
    RingoTC   314 天前
    CSAPP 更适合软件工程师看。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   991 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 38ms · UTC 21:07 · PVG 05:07 · LAX 13:07 · JFK 16:07
    ♥ Do have faith in what you're doing.