数据在电脑内是如何进行传输的?
根据抽象层次来梳理下大致的概念:传输信号是数字信号,高低电平表示,可以比模拟信号更加准确的传输信息。数字信号的处理的底层是通过最最基本的逻辑门电路来完成的,基于物理定律。如果你不了解逻辑门,你可以先去研究下三极管/晶体管,在集电极输入信号三极管可以导通,所以可以看做是一个电信号触发的开关。接着,一堆开关排列可以构成逻辑门,用来输出想要的逻辑。许许多多的逻辑门可以构成触发器、锁存器、比较器、加法器、乘法器、比较器等各种奇怪的模块。(如果想知道怎么构成的原理请回复,有人想了解或者我闲着没事干的话会更新)当你想实现一种功能,因此把以上一些奇怪的模块组合在一起(一些简单的模块集成在一块ic上)时,你需要几个引脚/信号来输入你要这个部件执行哪一种命令;你还需要几个引脚/信号来输入要计算/处理的数据。这时,你做成了内存阵列、选择器、运算器、累加器等等更加实用的部件。(同样,如果想知道怎么构成的原理请回复,有人想了解或者我闲着没事干的话会更新)你做好了上述的部件以后,你想实现更复杂的功能,希望可以编程来控制电路计算,所以你想设计一个既可以存储你要它执行的指令,又可以计算数据,最好还可以把数据输出(显示)给大家看的ic,你陷入了为难:这么多模块,怎么才能让不同的部件进行协同运作呢。经过苦苦的研究/踩着前人的肩膀,你发现了可以搞一种叫总线的东西在模块间通信以达到目的。首先,你要传输数据,你需要数据总线;其次,你的指令要从存储器取出执行,你需要指令/控制总线,来告诉各部件按照什么命令执行;最后需要的是地址总线,来通信执行第几条指令,修改哪个字节的内存。设计完成了,你用了5000个晶体管做成了一台电脑,可是好慢哦,又时居然还会出错!你苦心研究,又运用了纠错算法,校验一类的程序,降低了出错的概率,你优化了电路,使用了流水线,又把500000(这时优化了各种地方,门越来越多)个晶体管刻在晶圆上,封装好做成了ic,再进行实验,烧录程序,成功执行,速度提升20倍,误码0.000000001%以内,成功运行自己写的系统。
电脑里的数据都是0和1,或者说高电压,低电压,貌似是通过电子移动实现的。对这个东西在电脑里的传送一直缺乏感性认识,求指点。不是电子的移动而是电场的改变。当然电场不是瞬间建立的,而是随着半导体器件中的电子移动建立的,不过这就是很物理的东西了,电子工程层面上不需要考虑这些。我想到提升传输速度的方式是并行,比如一个芯片上有N个金属引脚,意味着这个芯片能一次接受N位数据?但是这N位数据怎么保证完整性,比如一系列N位数据传输的时候,怎么保证每个N位数据是同步的,且不会和之前之后的比特混淆。并行,或者说提高位宽是一种方法,还有一种是提高频率,最终的结果是传输速率=位宽*频率。“芯片接受数据”这个说法是不准确的,电线就直接连在芯片的引脚上,芯片随时在接受这些信号。任何一个引脚电压的变化都会导致芯片状态的变化,这个过程是不需要去主动“接受”的。在芯片设计的时候就已经决定每个引脚电平变化时芯片内部电路的变化。这也是电子和软件不同的地方吧。并行数据同步靠的是时钟信号,时钟在并行通信中是肯定要有的。时钟通常会每传输一位跳变一次之类,具体的工作方式根据协议有区别,接受方发现时钟信号变了就意味着该读下一位了,当然这种方式也造成了并行通信的频率不能很高。