`
xitong
  • 浏览: 6195143 次
文章分类
社区版块
存档分类
最新评论

计算机的启动-从设计一个主板开始

 
阅读更多

计算机是怎么启动的呢?这是一个问题。操作系统是怎么操作硬件的呢?这是又是一个问题。编址是怎么回事,这当然也是一个问题。我们通过设计一个简单的主板来理解这一切。
首先我们看一下编址,所谓的编址有一种方式就是将所有主板上“可以被访问的”设备全部编址到一个空间中,这样的设备包括内存,pci设备等所有设备。本文还是以最简单的方式举例,我们设想地址总线只有3位,也就是cpu只能处理3位的地址,那么我们怎么设计一个主板呢?不失一般性,以最简单的场景为例,我们的板子上除了一个内存外只有一个设备叫做dev0,如果要我来设计这个板子我就将3位地址空间0-2分3个地址给内存,分3到5这3地址个给dev0,6-7这两个地址给bios。
但是板子是怎么知道这个地址信息的呢?这个地址拓扑信息存放在cmos芯片中,由bios使用,由北桥和南桥芯片负责最后的硬件信号路由,如下图:

是

这样的设计,主板在上电稳定之后,按照cpu的特定要求,首先从地址6处取出指令,这个地址信息直接路由到bios,然后bios的代码进入cpu,开始执行,执行什么呢?执行自检!如何自检呢?有两种方式,最简单的莫过于根据bios设定的地址信息进行自检,具体办法:
1.检测内存的容量:由于我们事先不知道内存到底占用那些地址,因此我们必须从北桥处得到地址路由信息,然后根据这个路由信息依次从内存插槽的地址处读取数据,如果能读到数据,内存容量数就加1,依次类推。
2.检测设备型号:根据设备的规范,从“设备的起始地址+设备类型偏移地址”读取信息,读取到的信息就是设备的类型,细节不外乎多路复用电路和选择电路,这些在《计算机组成原理》中都能学到。
3.注意,北桥芯片内部的地址路由信息并不是bios设定的地址拓扑信息,而是主板硬连线的地址信息,比如内存条插槽有3根地址线都连接到了内存,那么就会读取8个地址的数据,很显然根据bios的设定,地址3往后的数据并不来自内存,而是来自dev0和bios,因此在读取数据之后还要进一步探测设备类型,如果读取到的设备类型不是内存,那么就不算内存容量。具体实现就是我们在设计内存条和设备时为每一个地址都保存一个“复位信息”,该信息表明了这个设备的类型,具体细节:
3.1.读取地址0的数据,得到了内存复位信息,它是内存,内存容量加1;
3.2.读取地址1的数据,同3.1...
3.3.读取地址2的数据,...
3.4.读取地址3的数据,得到了非内存的复位信息,我们认为它不是内存;
3.5....
除了采用“复位信息”这种办法探测设备类型之外,控制总线也是一种可以利用的总线,在选定了地址之后,可以发送特定的控制信息,来使得设备自报姓名!
这样我们就得到了内存的容量,也得到了哪些地址连接的不是内存,而是设备,这些都是北桥的功劳,但是连接的具体是哪种设备,这就需要bios的地址拓扑和南桥芯片来帮忙了。所有的芯片都是要符合一定标准的,标准是怎样的,全靠人来确定,因此可以说,计算基本上是没有智能的。
现在自检完成了,一切地址信息都已经在内存中了(bios自检的第一步就是确定内存的存在和显示设备的存在),之后它将开始引导操作系统了,可以直接引导操作系统,也可以引导一个叫bootloader的东西,然后由bootloader来引导操作系统,不管怎样,bios已经可以将对机器的控制权交给其它代码了,那么它是怎样引导OS的呢?这也很简单,比如bios是从第一块磁盘启动,那么bios在交付控制前之前要执行从磁盘读取代码(mbr的引导代码)到内存的操作,由于自检过程检查了所有的设备,磁盘当然也是其中之一,bios当然知道磁盘的地址在哪里,再加以控制总线上信号控制,磁盘内存的读取也不是什么难事,接下来就是操作系统的天下了。
要从根本上认识到,机器的所有信息都是bios自检后告诉操作系统的,操作系统仅仅使用了这个信息,比如中断号之类的信息,不要以为是程序员动态申请的,这些信息都是从bios中得到的,这样一来,操作系统就知道了bios告知的地址信息,然后操作系统也就可以从这些地址的某些偏移处读取设备的属性从而构建出诸如linux内核中pci_dev之类的数据结构了。硬件+bios搭台,操作系统唱戏,这就是我们当前计算机系统的全部内容,程序员不负责搭台,他们只需要把戏唱好就好了,搭台的事由主板厂商来做。
然而,正如我们现实生活中所能感知到的,有时候,一个很好的演员会在一个质量低劣的舞台上受伤,这只能说明舞台不好吗?很多时候,戏子们太天真了,而实际上,下面漏洞重重!

分享到:
评论

相关推荐

    第3课--认识计算机-教学设计.doc

    [教学重点与难点] (1)计算机是由特定功能的各种设备组合在一起的一个整体。 (2)计算机硬件和软件的概念。 [教学过程] 一、导入 同学们,计算机这个词对 于我们来说已经不再陌生了,它已经渗透到我们生活中的每个...

    NetWaker 启动远程计算机

    能否实现远程唤醒,其中最主要的一个部件就是支持WOL的网卡,远端被唤醒计算机的网卡必须支持 WOL,而用于唤醒其他计算机的网卡则不必支持WOL。另外,当一台计算机中安装有多块网卡时,只须将其中的一块设置为可远程...

    办公用计算机系统设计

    注意:在Windows XP拷贝完文件到硬盘,第一次重新启动计算机前,必须把光盘从光驱中取出,否则系统仍会从光盘启动并会循环执行安装程序。 e.接下来基本上点着下一步就可以往下走,一直到正常进入XP系统界面为止。 2 ...

    【电子系统设计】数字时钟/康芯KX-CDS10S/CDS10S/小学期/东油物联网

    利用杭州康芯KX-CDS10S现代计算机组成原理实验开发系统、微机和QuartusⅡ20软件系统,使用原理图输入方法设计数字钟。数字钟主要由显示译码器、分频器、时、分、秒电路模块以及附加电路构成。其中分和秒电路模块核心...

    U盘硬盘等修复、维护、修理工具

    方便实用的USB卸载工具,驻留托盘,左键功能同系统的图标,右键强力卸载USB移动存储设备人性化设计,显示设备名和版本号,不像系统千篇一律都是USB Mass Storage Device,这样一眼就能看出该弹出哪个了。 魅色U盘...

    计算机应用技术(实用手册)

    让默认的就可以了,但是超频玩者是肯定不会放过任何可以提高性能的东西的,所以如果你想在这里让你的电脑提升一点性能的话,就必须慢慢试验,选择一个适当的参数才能让你的计算机达到性能和稳定的最佳状态!...

    计算机应用基础windows.pptx

    初识计算机 任务1 认识计算机 1 任务2 认识Windows 7操作系统 2 任务3 管理文件 3 任务4 管理计算机 4 任务5 Office办公软件的基本操作 5 任务1 ... 计算机自检后自动引导Windows7,在登录界面单击一个用户图标,输入

    计算机系统计算机基础(1).pptx

    计算机要自动执行一个程序,就是在控制器的控制下,从第一条指令开始,逐条读取指令、分析指令、执行指令直至执行到程序的最后一条停机指令即完成程序。 C语言:C语言是一种结构化程序设计语言。 字长表示CPU一次...

    《计算机应用基础》知识点.doc

    将编好的程序和原始数据事先存入主存储器中,然后启动计算机工作,使计算机在 不需要人工干预的情况下自动高速地从存储器中读出指令并加以执行,这就是存储程序 的基本含义。 计算机发展的四个阶段: 划分依据:...

    《计算机应用基础》知识点(2).doc

    将编好的程序和原始数据事先存入主存储器中,然后启动计算机工作,使计算机在 不需要人工干预的情况下自动高速地从存储器中读出指令并加以执行,这就是存储程序 的基本含义。 计算机发展的四个阶段: 划分依据:...

    《计算机应用基础》知识点(1).doc

    将编好的程序和原始数据事先存入主存储器中,然后启动计算机工作,使计算机在 不需要人工干预的情况下自动高速地从存储器中读出指令并加以执行,这就是存储程序 的基本含义。 计算机发展的四个阶段: 划分依据:...

    XX计算机应用基础试题(附答案).doc

    计算机运算部件一次能够处理的二进制数据位数 B.8位二进制长度 C.计算机的总线数 D.存储系统的容量 11. 在计算机领域中,通常用英文单词"BYTE"来表示。 A.字 B.字长 C.二进制位 D.字节 12. 在计算机领域中,通常用...

    计算机基础应用培训课件.pptx

    1-1-1-2 计算机软件系统 操作系统(Operating System,简称OS) 是一个管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理...

    安卓毕业设计加源码--:计算机导论(大一上)

    ):是控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用。[^1](如上图所示) [^1]: 即==功能== 计算机的...

    计算机基础.docx

    同一个数的浮点数表示形式不唯一 9、计算机的字长不可能是() 。 A.8 B .15 C .32 D .128 10、一台 PC机中允许安装的内存最大容量是由主板上的()决定的。 A . CPU B . BIOS 中的自检程序 C . CMOS中保存...

    计算机应用基础3.doc

    A:十进制码 B:二进制码 C:ASCII码 D:汉字编码 答案: B 8、一个完备的计算机系统应该包含计算机的____。 A:主机和外设 B:硬件和软件 C:CPU和存储器 D:控制器和运算器 答案: B 9、计算机系统中用来保存程序...

    bios的设置,,,,,

    如果经常使用不止一个戴尔坞站设备,并且希望最小化接入坞站时的初始时间,设置为"ENABLED"(默认设置)。如果希望操作系统对计算机连接的每个新的坞站设备都生成新的系统设置文件,设置为"DISABLED"。 System ...

    21春《计算机基础》北语网院作业-4.docx

    21春《计算机基础》北语网院作业_4 21春《计算机基础》北语网院作业-4全文共8页,当前为第1页。 21春《计算机基础》作业_4 1. 在Windows中,利用"搜索"功能查找磁盘中的某个文件时,不可以使用的方法是按文件()...

    linux操作系统.txt

    1.为什么开始启动计算机的时候,执行的是BIOS代码而不是操作系统自身的代码? 因为CPU的逻辑电路被设计为只能运行内存中的程序,没有能力直接从软盘运行操作系统。 BIOS是被固化在主板上的一块很小的ROM芯片里的程序...

    史上最强的嵌入式底层驱动开发课程 Linux系统开发+Linux高级程序+主板开发+ARM等

    ├从零开始认识开发板> │ ├01 - 从零开始认识开发板1.mp4 │ ├02 - 从零开始认识开发板2.mp4 │ ├03 - 从零开始认识开发板3.mp4 │ ├04 - 从零开始认识开发板4.mp4 │ └05 - 从零开始认识开发板5.mp4 ├操作...

Global site tag (gtag.js) - Google Analytics