博主除了画过几次PCB板子就没搞过硬件,但实践中感觉到,软件从根源上依附于硬件而存在,随硬件的不断演化而发展变化,掌握软件背后的一些硬件基础和发展脉络,编写软件时才能自信而不盲目,主动而不是机械地紧跟技术变化。
比如总线,看起来它和一般程序员关系不大。但它却串联起很多问题:为什么片上RAM和外部RAM访问速度有差异;为什么CPU访问外部RAM速度慢;为什么访问IO设备更慢;为什么CPU访问cache比外部RAM快?
背景
总线是一组、多条信号线,是计算机中多个模块间(如CPU、内存、外设等)的通讯信路;
每根信号线上传输变化的0/1信号;
信号收发双方必须以某种方式(如一根时钟信号线)同步,以正确传递和解析这些信号;
信号变化的频率大致决定总线上数据传输速率,随着工艺的进步,总线频率不断提高,带宽不断增加,但和CPU一样有极限,因为频率越高&#