组成计算机的三大件:CPU,内存和IO。

1 总线

总线就是一条或者多条物理上的导线,每个部件都接到这些导线上,同一时刻只能有一个部件在接收或者发送。

仲裁总线:所有部件按照另一条总线,也就是仲裁总线或者中断总线上给出的信号来判断这个时刻总线可以由哪个部件来使用。产生仲裁总线或者中断电位的可以是CPU,也可以是总线上的其他设备。

如上图所示,主板上的每个部件都是通过总线连接起来的。

PCI总线:目前台式机与服务器所普遍使用的一种南桥与外设连接的总线技术。

北桥芯片:IO总线和以太网HUB模型的区别在于多了一个北桥芯片。因为CPU和内存足够快,他们之间单独用一个总线连接,这个总线和慢速IO总线之间通过一个桥接芯片连接,也就是主板上的北桥芯片。这个芯片连接了CPU、内存和IO总线。

前端总线:CPU与北桥连接的总线叫做系统总线,也叫作前端总线。

内存总线:内存与北桥连接的总线叫做内存总线。

由于北桥速度太快,而IO总线速度相对北桥显得太慢,所以北桥和IO总线之间,往往要增加一个网桥,叫做南桥,在南桥上一般集成了众多外设的控制器,比如磁盘控制器、USD控制器等。

总线位数:系统总线的条数,比如64条或者128条,叫做总线的位数。

CPU位数:寄存器和运算单元之间总线的条数。

IO总线分成数据总线、地址总线和控制总线。寻址用地址总线,发数据用数据总线,发中断信号用控制总线。IO总线是并行而不是串行的。

2 CPU、内存和磁盘之间通过网络来通信

因为主板上的总线很短、很稳定,所以CPU和存储设备之间组成的一个“网络”不需要运输层,而只需要物理层、网络层和上三层的网络。

设备映射:每个IO设备在启动时都要向内存中映射一个或者多个地址,这个地址有8位长,又被称做IO端口。针对这个地址的数据,统统被被北桥芯片重定向到总线上实际的设备上。

CPU在对磁盘发送指令的时候,这些指令其实是发给了主板南桥上集成的控制器,比如ATA控制器或者SCSI控制器。让磁盘读取或者写入某个磁道、某个扇区等,CPU不需要知道这些,CPU只需要知道逻辑块地址是读还是写就可以了,让CPU产生这些信息的是磁盘控制器驱动程序。

 

3 小结

CPU、内存和磁盘之间组成的网络可以用下面图抽象:

 

参考资料

《大话存储2-存储系统架构与底层原理极限剖析》 

大话存储 1 - 走进计算机IO世界的更多相关文章

  1. 走进JavaWeb技术世界3:JDBC的进化与连接池技术

    走进JavaWeb技术世界3:JDBC的进化与连接池技术 转载公众号[码农翻身] 网络访问 随着 Oracle, Sybase, SQL Server ,DB2,  Mysql 等人陆陆续续住进数据库 ...

  2. 走进缓存的世界(三) - Memcache

    系列文章 走进缓存的世界(一) - 开篇 走进缓存的世界(二) - 缓存设计 走进缓存的世界(三) - Memcache 简介 Memcache是一个高性能的分布式内存对象缓存系统,用于动态Web应用 ...

  3. 走进JavaWeb技术世界14:Mybatis入门

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  4. [C#] 走进 LINQ 的世界

    走进 LINQ 的世界 序 在此之前曾发表过三篇关于 LINQ 的随笔: 进阶:<LINQ 标准查询操作概述>(强烈推荐) 技巧:<Linq To Objects - 如何操作字符串 ...

  5. 小丁带你走进git的世界二-工作区暂存区分支

    小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git  init git  clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...

  6. Atitti 大话存储读后感 attilax总结

    Atitti 大话存储读后感 attilax总结 1.1. 大话存储中心思想(主要讲了磁盘文件等存储)1 1.2. 最耐久的存储,莫过于石头了,要想几千万年的存储信息,使用石头是最好的方式了1 1.3 ...

  7. 带你走进rsync的世界

    导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录.rsync共有3种使用方 ...

  8. SQL SERVER大话存储结构(3)_数据行的行结构

            一行数据是如何来存储的呢?     变长列与定长列,NULL与NOT NULL,实际是如何整理存放到 8k的数据页上呢?     对表格进行增减列,修改长度,添加默认值等DDL SQL ...

  9. SQL SERVER大话存储结构(4)_复合索引与包含索引

              索引这块从存储结构来分,有2大类,聚集索引和非聚集索引,而非聚集索引在堆表或者在聚集索引表都会对其 键值有所影响,这块可以详细查看本系列第二篇文章:SQL SERVER大话存储结构 ...

随机推荐

  1. linux开机自启动设置,自定义开机启动模版,nginx开机自启动服务

    /etc/init.d 目录,我们把shell脚本放在这个目录下来作为启动脚本 都是用来放服务脚本的,当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别. ...

  2. 译自如何将Spring Cloud应用程序从Spring Boot 1.2迁移到1.3

    前言 笔者第三个Spring Cloud(版本为Spring Boot 1.2)类项目升级最新版本时遇到不少问题,本文内容是作者翻译Spring Cloud官网一位国外友人文章产生. 原文地址: Mi ...

  3. Normal Map中的值, Tangent Space, 求算 Tangent 与 Binormal 与 TBN Matrix

      - Normal Map中的值 -   有没有想过,Normal Map(法线贴图)为什么看上去都是“偏蓝色”的?这是因为,在map中存储的值都是在Tangent Space(切空间)下的.比如, ...

  4. C++类型转化小结

    之前面试就有被问过关于使用类型转换的问题,因为主要是做Windows驱动的开发,一直都是纯C语言+汇编,当时真的是只用过C语言的强制类型转换,C语言的强制类型转换(Type Cast)很简单,不管什么 ...

  5. Selenium3自动化问题一:selenium3在火狐浏览器执行driver.quit()报错2052解决方案

    一:问题说明 最近用到selenium3在火狐浏览器中执行自动化脚本,每次执行到driver.quit()方法总是报错,报错日志如下: 二:解决方案 搜了一圈网上的资料,都说是火狐的问题,于是去到se ...

  6. Tomcat学习总结(8)——Tomcat+Nginx集群解决均衡负载及生产环境热部署

    近日,为解决生产环境热部署问题,决定在服务器中增加一个tomcat组成集群,利用集群解决热部署问题. 这样既能解决高并发瓶颈问题,又能解决热部署(不影响用户使用的情况下平滑更新生产服务器)问题. 因为 ...

  7. 第4章 Selenium2-java WebDriver API (一)

    4.1  从定位元素开始 WebDriver提供了八种元素定位方:   在Java语言中对应的定位方法: ·id findElement(By.id())        ·name findEleme ...

  8. SpringBoot学习(二)——Spring的Java配置方式

    Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 一.@Configuration 和 @Bean Spring的Java配置方式是通过@Configuration和@Bean ...

  9. 我搞zabbix的那两天(1)

    摘要:在生产环境上对服务器进行网络参数(比如CPU.内存等)的监控是很必要的,比如当服务器网络参数如内存不够用.磁盘空间快要占满时及时通知运维人员进行处理,保证服务器系统的安全.而zabbix就是这么 ...

  10. 使你的IT职业生涯更上一层楼de14条建议

    摘要:升值为企业IT部门的领导者,是大部分IT技术人员职业生涯的最终追求.但从一般大众中脱颖而出,并非易事.仅仅把本职工作干好远远不够,还需要IT技术人员展示出投身于技术发展的奉献精神及伴随技术发展而 ...