常规计算机硬件体系结构.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常规计算机硬件体系结构

第二章 常规计算机硬件体系结构 早期的包处理系统是建立在常规计算机系统之上的,这也是最廉价的包处理系统。我们定义一个常规的计算机系统由四个基本部件组成:一个CPU,一个内存,一个或多个I/O设备,一条总线。总线连接另外的三个基本部件,并允许它们相互通信。PC机是一个常规计算机系统,因为它包括了以上所有四个部件。 为了将一台常规的计算机转换成一个可以处理数据包的系统,必须在计算机上增加一些硬件和软件。增加的硬件用来发送和接收数据包,增加的软件用来处理数据包。2.1 早期的NIC 将一个计算机系统连接到一个网络的硬件设备称为网络接口卡(Network Interface Card,NIC)。对于计算和I/O设备一样连接到计算机的总线并由CPU控制,CPU控制NIC的方法与控制其它I/O设备的方法相同。对于网络来说,NIC表现得像一台主机,即NIC可以发送接收数据包。 主机和包分析器只连接到一个网络上,这样的系统只需要一块NIC。复杂一些的系统,像网桥、路由器等,要求多个网络连接。当系统需要多个网络连接时,有两种可能的实现方法。一种方法是将多块网卡插入到总线扩展槽中,每块网卡连接一个网络;另一种方法是在一块电路板上提供多个独立的网络接口,电路板插入扩展槽中,每个网络接口连接一个网络,目前已经出现了这种商用的NIC硬件。从计算机的角度来看,这两种方法没有什么区别。但是由于总线扩展槽的数量是有限的,因此后一种方法更好,可以节省扩展槽。 网络接口由CPU操作,这意味着CPU控制着所有数据包的发送和接收。为发送一个数据包,CPU首先在内存中组装好数据包,然后将包传递给NIC,NIC再将数据包发送到网络上。在系统接收一个数据包前,CPU必须先允许NIC,指明数据包存放。NIC等待从网络上到来的数据包,将其存放到指定的位置,然后通知CPU。芯片,它们保证每个输出的帧具有正确的格式并且产生出符合物理层协议标准的信号波形;类似地,它们检查每个到来的帧以保证每个帧是有效的。 数据总线上一次可以传输的数据量由数据总线的宽度(即数据线的数目)决定一般来说,数据总线的宽度不足以一次传输一个完整的帧,因此一个帧必须分成许多较小的片段(如32比特)分多次传递给NIC。由于NIC是由CPU操作的,这意味着CPU必须参与到这种传输过程中。事实上,早期的NIC硬件依赖于计算机系统的CPU完成帧的收发。在帧的接收过程中,CPU反复地访问NIC取得下一个片段的数据,然后存放到内存中。在帧的发送过程中,CPU反复地将帧的片段发送给NIC。使用CPU传输数据包的主要优点是代价低,因为NIC硬件不需要做很多事,因此可以做得很。主要的缺点是开销大和可扩展性差,使用CPU处理输入输出意味着它不能做别的事更重要的是,一个CPU无法适应高速网络,特别是当系统有多个网络接口时。2.2 现代的NIC 为了支持多个网络接口和适应高速网络,必须将输入/输出和包处理分离开来,并尽可能避免使用CPU,因此现代的NIC都包含独立于CPU操作的复杂硬件。以下四种技术用来优化数据传输和减少开销:(1)上地址识别和过滤;(2)上包缓存;(3)直接内存访问DMA;(4)操作链。 (1)上地址识别和过滤 只要都高/视频这样的应用用来发送连续的数据流。更糟糕的是,网络上所有的节点都要产生这个开销,即使它们不参加任何一个多播组。 为减小开销,现代的NIC提供上多播地址识别和过滤。由于多播组是动态的,因此NIC允许CPU描述或改变多播地址集。当NIC加电时,它只识别节点的单播地址和网络广播地址。在任何时候,CPU都可以指示NIC开始接收某个多播地址的帧或者停止接收某个多播地址的帧。一旦CPU指定了地址,NIC就负责所有的识别工作,即接收那些匹配指定地址的帧,并丢弃其余的帧。由于NIC的存储空间是有限的,因此计算机不能指定任意数目的多播地址,事实上,许多NIC限定多播地址集合的大小为32或64。实际上,一个典型的应用在任何时候只加入一到两个多播组(如接收一个音频流和/或一个视频流),而一个节点上任何时候最多只有几个应用加入多播,因此大多数计算机系统只同时使用几个多播地址。 当一个多播帧到来时,将帧头中的多播地址与地址集合中的64个地址逐一比较是一件费时的工作,一般的NIC都没有足够的计算能力在短时间内完成。为此,NIC硬件采用了一种优化的实现方法。NIC维护一个64比特的矢量,并用一个哈希函数将多播地址映射成[0,63]之间的一个数。从本质上说,这是将所有可能的多播地址划分成64个组,每个组对应矢量中的一个比特。对于CPU指定要监听的每个多播地址计算一个哈希值,并将矢量中对应比特的值置为1。当一个多播帧到达时,NIC计算该地址的哈希值,然后检查矢量中对应比特的值。若该比特的值为1,则接收该帧,否则丢弃。在这个方案中

文档评论(0)

wangsux + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档