首页 > 其他分享 >揭秘计算机奇迹:探索I/O设备的神秘世界!

揭秘计算机奇迹:探索I/O设备的神秘世界!

时间:2023-10-26 09:34:49浏览次数:40  
标签:DMA 探索 奇迹 CPU 接口 寄存器 数据传输 揭秘 设备

引言

在之前的章节中,我们详细讲解了计算机系统中一些核心组成部分,如中央处理器(CPU)、内存、硬盘等。这些组件负责处理和存储数据,使得计算机能够有效地运行。然而,除了这些核心组件,计算机系统还包含许多其他重要的部分,其中之一就是输入输出设备。它们使得计算机能够与用户进行有效的沟通和交流,提升了计算机的实用性和用户体验。因此,在学习计算机系统的过程中,深入了解输入输出设备的原理和工作方式也非常重要。

输入输出设备

image

I/O接口,又被称为I/O控制器或设备控制器,是一种负责协调主机与外部设备之间数据传输的关键组件。其主要功能是管理数据的输入和输出,在数据传输过程中起到桥梁的作用。通过有效地控制和调度数据流,I/O接口能够实现高效的数据传输,提升系统的整体性能。

image

I/O控制器涵盖了多种多样的类型和标准。其中,针对不同外部设备的控制需求,相应的I/O接口也会制定相应的标准。举例来说,我们有用于控制USB设备的I/O接口,它提供了可靠的数据传输和连接性能,使得计算机可以方便地与各类USB设备进行通信。另外,还有用于控制SATA 3.0硬盘的I/O接口,它支持高速数据传输,并具备热插拔和高可靠性的特点。

image

image

如今,随着技术的不断进步和集成电路的发展,现代的I/O接口(芯片)也趋向于被集成到南桥芯片内部。

CPU如何控制I/O设备

程序直接控制和中断控制方式

image

  1. 首先,我们来讨论数据寄存器(Data Register)。当CPU需要将数据写入I/O设备时,例如打印内容为“GeekTime”,首先要将字符“G”发送给对应的I/O设备。
  2. 接下来是命令寄存器(Command Register)。CPU向打印机发送一个命令,告诉它开始打印工作。此时,打印机的控制电路将执行两个动作。首先,它会设置状态寄存器中的状态为not-ready,表示打印机正在工作中。然后,它会实际操作打印机进行打印。
  3. 而状态寄存器(Status Register)的作用是向CPU报告设备状态。当设备开始工作时,状态寄存器会告知CPU设备正在工作中。在这个阶段,CPU发送的任何数据或命令都是无效的。只有当前面的动作完成,状态寄存器重新变为ready状态时,CPU才能发送下一个字符或命令。

现在,让我们讨论快速的I/O设备(如磁盘),如果每准备好一个字就向CPU发送一次中断请求,会导致什么问题呢?

这种情况下,CPU需要花费大量的时间来处理中断服务程序,从而导致CPU利用率严重下降。每次中断请求都会打断CPU正在执行的任务,使其无法充分利用时间进行其他计算工作。这种频繁的中断请求会导致CPU的效率下降,影响系统的整体性能。

为了解决这个问题,可以采取一些优化措施。例如,可以引入缓冲区,将多个字节的数据一次性传输给CPU,减少中断请求的次数。另外,也可以使用DMA(直接内存访问)技术,将数据直接传输到内存,减轻CPU的负担。通过这些优化措施,可以提高CPU的利用率,提升系统的整体性能。

DMA存取方式

image

DMA控制方式是一种优化技术,它通过在主存和设备之间建立一条直接数据通路(DMA总线)来实现高速数据传输。在这种方式下,CPU只需向DMA接口发送读/写命令,并指示主存地址、设备地址以及读写数据的数量等参数,然后DMA控制器便会自动控制设备与主存之间的数据读写操作。

具体而言,当CPU发出读/写命令后,DMA控制器会通过DMA总线直接访问设备,并将数据传输到主存或从主存传输到设备。为了保证数据的完整性,在每传输一整块数据(如1KB)后,DMA控制器才会向CPU发出一次中断请求,通知CPU数据传输已完成。这样,CPU就能够及时处理其他任务,而不需要等待每个数据传输的完成。

通道控制方式

image

有的商用中型机、大型机可能会接上超多的I/0设备。如果都让CPU来直接管理这些设备的数据传输和操作,那么CPU的负担将会非常沉重,无法充分发挥其处理计算任务的能力。为了解决这个问题,引入了通道的概念。

通道是具有特殊功能的处理器,可以将CPU与I/0设备之间的通信过程进行统一管理。通道有自己的数据寄存器、命令寄存器和状态寄存器,可以完成与I/0设备之间的数据传输、设备控制和错误处理等任务。CPU只需要发送指令给通道,然后通道会自动完成与设备之间的数据传输和操作,不再需要CPU的直接参与。

image

通道可以被理解为是一种功能较为有限的处理器,类似于“弱鸡版的CPU”,它能够识别并执行一系列通道指令,通常这些指令的种类和功能比较单一。

信号和地址

一旦我们理解了实际的I/O设备和接口之间的关系,就会面临一个新的问题:CPU到底需要向总线发送怎样的命令,才能与I/O接口上的设备进行通信呢?

在计算机系统中,CPU和I/O设备之间的通信是通过CPU支持的特定机器指令来实现的。这些机器指令被称为I/O指令,用于控制和操作I/O设备。CPU可以使用这些指令来发送命令、读取数据、写入数据以及查询设备状态等操作。

为了简化已经足够复杂的CPU,计算机系统将I/O设备的各个寄存器和I/O设备内部的内存地址都映射到主内存地址空间中。主内存的地址空间中会为不同的I/O设备预留一段一段的内存地址。当CPU想要与这些I/O设备进行通信时,它会向这些预留的地址发送数据。

而我们的I/O设备会监控地址线,并在CPU向其发送数据时,将传输过来的数据接入到对应设备的寄存器和内存中。无论是向I/O设备发送命令、查询设备状态还是传输数据,CPU都可以通过这种方式进行。这种方式被称为内存映射I/O(Memory-Mapped I/O,简称MMIO)。

image

CPU 和 I/O 设备之间的通信

在计算机系统中,CPU和I/O设备之间的通信是通过以下方式来解决的。

首先,在I/O设备一侧,我们将I/O设备分成可以与CPU通信的接口电路和实际的I/O设备本身。接口电路包含状态寄存器、命令寄存器、数据寄存器、数据缓冲区和设备内存等组件。接口电路通过总线与CPU通信,接收来自CPU的指令和数据。接口电路中的控制电路会解码接收到的指令,并实际操作相应的硬件设备。

而在CPU一侧,CPU通过访问内存地址或端口地址进行数据的传输和读取。对于CPU来说,它并不直接与特定设备进行交互,而是通过读写特定的内存地址或端口地址来实现与I/O设备的通信。在软件层面,通过定义传输命令和数据的方式,而不是引入新的指令,来实际操作对应的I/O硬件。这样,CPU可以通过与接口电路的通信来与I/O设备进行交互,完成输入和输出的功能。

总结

本文主要介绍了计算机系统中输入输出设备的原理和工作方式。输入输出设备是计算机系统中的重要组成部分,它们使得计算机能够与用户进行有效的沟通和交流。文章介绍了I/O接口的功能和作用,以及不同类型的I/O接口的标准。同时,还介绍了CPU如何控制I/O设备的程序直接控制和中断控制方式,以及使用DMA和通道控制方式进行优化的方法。最后,文章解释了CPU和I/O设备之间的通信方式。通过深入了解输入输出设备的原理和工作方式,可以更好地理解计算机系统的工作原理,提升系统的整体性能。

标签:DMA,探索,奇迹,CPU,接口,寄存器,数据传输,揭秘,设备
From: https://www.cnblogs.com/guoxiaoyu/p/17773405.html

相关文章

  • 智安网络|探索语音合成技术的未来:揭秘人工智能配音技术的背后
    随着人工智能技术的迅猛发展,配音行业也迎来了人工智能配音技术的崭新时代。人工智能配音技术通过语音合成和自然语言处理等技术手段,实现了逼真的语音合成,为影视、广告和游戏等领域带来了新的可能性。第一部分:语音合成技术的发展语音合成技术是人工智能配音技术的核心,它通过将文本转......
  • 可观察性支柱:探索日志、指标和跟踪
    通过检查系统输出来测量系统内部状态的能力称为可观察性。当可以仅使用输出信息(即传感器数据)来估计当前状态时,系统就变得“可观察”。您可以使用来自Observability的数据来识别和解决问题、优化性能并提高安全性。在接下来的几节中,我们将仔细研究可观察性的三大支柱:指标、日志和......
  • 火山引擎 LAS Spark 升级:揭秘 Bucket 优化技术
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群文章介绍了Bucket优化技术及其在实际业务中的应用,包括SparkBucket的基本原理,重点阐述了火山引擎湖仓一体分析服务LAS(下文以LAS指代)Spark对Bucket优化的功能增强,实现了Bucket易......
  • 揭秘计算机内部通信:探秘数据、地址与控制信号的奥秘
    引言在我们前面的讲解中,我们详细了解了计算机系统的核心组件,包括CPU、内存和磁盘。然而,总线在这个体系中同样至关重要。总线是计算机内部各部件间通信的桥梁,涉及数据、地址和控制信号的传输。在接下来的内容中,我们将深入探讨各种类型的总线,为你解析计算机系统的关键组成部分。总......
  • 五矿期货:悦数图数据库在金融期货行业的应用与实践探索
    本文整理自五矿集团-五矿期货有限公司副总经理-张剑锋在NUC2022年度用户大会上的分享。大家好,我是五矿期货的张剑锋。今天十分感谢悦数科技能够提供这个跟各位专家,还有行业技术大拿们当面学习和交流的机会。首先介绍一下期货行业。在中国的六大金融行业里面,银行,保险,还有信托,是......
  • 编程探索队团队介绍
    编程探索队队员介绍20211310何威烨(组长):我是个有条理、注重细节的人,具有创造性思维。我兴趣广泛,对软件开发、网络安全和前端或后端开发等方面都有粗略的了解。希望在接下来的合作中,我能不断解决复杂问题或挑战,不断学习并探索新的编程技术和工具。在项目中,在项目中,我希望参与需......
  • 探索CPU的黑盒子:解密指令执行的秘密
    引言在我们之前的章节中,我们着重讲解了CPU内部的处理过程,以及与之密切相关的数据总线知识。在这个基础上,我们今天将继续深入探讨CPU执行指令的相关知识,这对于我们理解计算机的工作原理至关重要。CPU是一系列寄存器的集合体我们以使用的IntelCPU为例,其中包含数百亿个晶体管......
  • 探索IT未来的五大趋势
    探索IT未来的五大趋势1.人工智能的崛起人工智能(AI)将成为未来IT的核心和驱动力。随着机器学习和深度学习技术的进步,AI能够处理和分析大量数据,具有自主学习和决策的能力。从智能助理到自动驾驶汽车,从智能医疗到金融风险管理,AI将在各个领域中发挥巨大的作用,为我们创造更智能、高效和......
  • 揭秘苹果手机IOS系统各种微信双开方式与对比
    揭秘苹果手机IOS系统各种微信双开方式与对比「技术科普」现如今一提到IOS系统多开、分身,很多人已经深恶痛绝了。我看了很多知乎相关的文章和问答,有很多人在某宝或者其他平台买过多开分身,结果都是用了两三个月就没办法用了,甚至用了一两周就用不了了,本文就好好的列举一下各种双开的......
  • 探索Java中神奇的ThreadLocal:为什么它是多线程编程的重要工具?
    (文章目录)......