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

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

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

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

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

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

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

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

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

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

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

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

    我以前算是该软件的。最近也在找专门做 CPU 设计方面的工作。
        53
    RingoTC   75 天前
    CSAPP 更适合软件工程师看。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   858 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 19:39 · PVG 03:39 · LAX 12:39 · JFK 15:39
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1