DMA通道是什么啊?

全部回答2
默认 最新
  • 电脑的启动过程中有一个非常完善的硬件自检机制。对于采用award bios的电脑来说,它在上电自检那短暂的几秒里,就可以完成100多个检测步骤。首先,先来了解两个基本概念:⒈ bois,既 基本输入输出系统。bios实际上就是被固化在计算机硬件中,直接与硬件打交道的一组程序,计算机的启动过程是在主板bios的控制下进行。⒉内存的地址。通常计算机中安装有32m、64m、128m或更多的内存,为了方便cpu访问,这些内存的每一个单字节都被赋予了一个地址。32m的地址范围用十六进制数表示就是0~1ffffffh,其中0~fffffh的低端1m内存非常特殊,因为我们使用的32位处理器能够直接访问的内存最大只有1m,因此这1m中的低端640kb被称为基本内存,而a0000h~bffffh则是保留给显卡的显存使用的。c0000h~fffffh是保留给bios使用,其中系统bios一般占用最后64kb或更多一点的空间,显卡bios一般在c0000h~c7fffh处。了解这两个基本概念之后呢,我们再来仔细看看计算机的启动过程。当我们按下电源开关时,电源开始向主板和其他设备供电,此时的电压并不稳定,主板控制芯片组会向cpu发出一个reset信号,让cpu初始化。当电源开始稳定供电后主板控制芯片组撤去reset信号,cpu马上就从地址ffff0h处开始执行指令,这个地址在系统bios的地址范围内,无论是award bios 还是 ami bios,放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。在这一步中,系统bios的启动代码首先要做的事就是进行post,(power on self test 既 加电自检)post的主要任务是检测系统中的一些关键设备是否存在和能否正常工作,如内存、显卡等。由于post的检测过程在显示卡初始化之前,所以在post自检过程中发现了一些致命错误,如没有发现内存或内存有问题时(post只检查640kb常规内存)是无法在屏幕上显示出来的,这时系统post会通过喇叭发声来报告错误情况,声音长短和次数反映了错误类型。接下来系统bios开始查找显示卡的bios,存放显示卡bios的rom芯片的起始地址通常在c0000h处,系统bios找到显卡bios之后调用它的初始化代码,由显卡bios来完成显示卡的初始化。大多数显示卡在这个过程通常会在屏幕上显示出一些显示卡的信息,如生产厂商、图形芯片类型、显存容量等内容,这就是我们开机看到的第一个画面,不过这个画面几乎是一闪而过的,也有显卡有延时功能,以便用户看清显示的信息。接着系统bios会查找其他设备的bios程序,找到之后同样要调用这些bios内部的初始化代码来初始化这些设备。查找完所有其他设备的bios之后,系统bios开始显示它自己的启动画面,其中包括有系统bios的类型、序列号、版本号等内容。同时屏幕左下角会出现主板信息代码,包含bios日期、主板芯片组型号、主板的识别编码及厂商代码等。接着系统bios开始检测cpu的类型和工作频率,并将检测结果显示在屏幕上,这就是我们开机看到的cpu类型以及主频。然后bios开始检测主机上所有内存的容量,并同时在屏幕上显示测试的数值,就是大家熟悉的在屏幕上飞速翻滚的内存计数器。内存通过测试之后,系统bios开始检测系统中安装的一些标准硬件设备,这些设备包括:硬盘、cd rom、软驱、串行总线控制器(就是大家熟悉的usb接口)等连接设备。另外,绝大多数新版本的系统bios在这一过程中还会自动检测和设置内存的相关参数和硬盘参数及访问模式等。标准设备检测完毕后,系统bios内部用于支持既插既用的代码将开始检测和配置系统中安装的既插既用设备。找到每一个设备之后,系统会在屏幕上显示出设备的型号、名称等信息,同时为该设备分配中断、dma通道和i/o端口等资源。到这一步为止,所有硬件都已经检测并配置完毕,系统bios会重新清屏,并在屏幕上方显示出一个系统配置列表,其中简略地列出系统中安装的各种标准设备,以及它们的使用资源和相关的工作参数。硬件自检过程结束。
    0 点赞
  • ?且恢挚焖俅?褪?莸幕?啤J?荽?菘梢源邮逝淇ǖ侥诖妫?幽诖娴绞逝淇ɑ虼右欢文诖娴搅硪欢文诖妗?MA技术的重要性在于,利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。在DMA传送开始的短暂时间内,基本上有两个处理器为它工作,一个执行程序代码,一个传送数据。利用DMA传送数据的另一个好处是,数据直接在源地址和目的地址之间传送,不需要中间媒介。如果通过CPU把一个字节从适配卡传送至内存,需要两步操作。首先,CPU把这个字节从适配卡读到内部寄存器中,然后再从寄存器传送到内存的适当地址。DMA控制器将这些操作简化为一步,它操作总线上的控制信号,使写字节一次完成。这样大大提高了计算机运行速度和工作效率。计算机发展到今天,DMA已不再用于内存到内存的数据传送,因为CPU速度非常快,做这件事,比用DMA控制还要快,但要在适配卡和内存之间传送数据,仍然是非DMA莫属。要从适配卡到内存传送数据,DMA同时触发从适配卡读数据总线(即I/O读操作)和向内存写数据的总线。激活I/O读操作就是让适配卡把一个数据单位(通常是一个字节或一个字)放到PC数据总线上,因为此时内存写总线也被激活,数据就被同时从PC总线上拷贝到内存中。对于每一次写操作,DMA控制器都控制地址总线,通知应将数据写到哪段内存中去。 DMA控制数据从内存传送到适配卡的方法与上面类似。对每一个要传送的单位数据,DMA控制器激活读内存和I/O写操作的总线。内存地址被放到地址总线上,像从适配卡到内存传送数据一样,以数据总线为通道,数据从源地址直接传送到目的地址。 DMA从DMA请求线(DREQ)上接收DMA请求,正像中断控制器从中断请求线(IRQ)上接收中断请求一样。一个典型的从适配卡到内存的数据传送是这样进行的,首先,对DMA控制器编程,写入数据要到达的内存地址和要传送的字节数。适配器可以开始传送数据时,它将激活DREQ线,与DMA控制器连通。DMA控制器在与CPU取得总线控制权后,输出内存地址,发送控制信号,使得一个字节或一个字从适配器读出并写入相应内存中,然后更新内存地址,指向下一个字节(或字)要写入的地址,重复上面的操作,直至数据传送完毕。对控制器进行不同编程,就可以实现单字节传送(即每传送一个字节都要求一个DREQ信号)或块数据传送(即全部数据传送只需要一个DREQ信号)。如果你要往计算机中插一块适配卡,而且适配卡使用DMA,通常安装程序会让你选择一个DMA通道,设定DIP开关或跳线,来为相应适配器设置DMA通道。尽管从理论上讲,只要不是同时使用DREQ线,不同的适配卡可以共享这条线的,但是按常规,我们最好为每个适配卡单独安排一个DMA通道,这样就可以保证不会发生DMA冲突。附表是DMA的缺省分配情况。通道 功能 通道 功能 O 空闲 4 用于级联DMA控制器 1 空闲 5 空闲 2 软盘 6 空闲 3 空闲 7 空闲 从中可以看出,DMA通道2和4已被占用,在大多数微机上,通道1、3、5、6和7可由你任意分配。我们平时最好对自己的计算机上DMA通道的分配情况记录下来,以免我们向计算机增加新硬件时出现两个适配卡共用一个通道,导致冲突。DMA---Direct Memory Access,直接内存访问,是一种数据传输模式。
    0 点赞

没有更多内容了

返回顶部
产品求购 求购