之前我们的mbr中我们刚刚向屏幕输出了“1 MBR”这几个字符,这种喜悦还没有过去,我就要给大家泼冷水了:这种打印字符的方法马上就用不了啦。
mbr是运行在实模式下,所以在实模式下也可以用bios的0x10中断打印字符串,这是因为:首先中断向量表只在实模式下存在,bios中断是要依赖于中断向量表的。可是,将来的世界是由保护模式罩着的,保护模式下就没有中断向量表了,所以也就无法用bios中断。其次,不希望有更多的依赖,好不容易脱离了对操作系统的依赖,又引入了一个新的依赖,这不科学。最后,难道大家不想直接同显卡说几句话吗。
万变不离其宗,肯定的是,bios的中断例程中凡是涉及到向屏幕打印之类的功能,必然也是通过操作显卡来实现,只是通过封装成中断处理程序给大家方便调用而已,我们也不用关心显卡操作的细节。等下,往屏幕上输出信息操作的对象不是显示器吗?你这一直说显卡是怎么回事?如果您也有这样的疑问,我这稍带着说解释一下。
某些IO接口也叫适配器,适配器是驱动某一外部设备的功能模块。显卡也称为显示适配器,不过归根结底它就是IO接口,专门用来连接cpu和显示器。我们想操作显示器,没有直接的办法,只能通过它的IO接口——显卡。
稍微说一下显卡的江湖吧,自从几年前AMD把ATI收购之后,世面上的显卡就分为两大类了,A卡和N卡,A卡是指以AMD为阵营的显卡厂商,N卡是以nvidia为阵营的显卡厂商。大家平时见到的七彩虹、技嘉、昂达之类的显卡,他们用的核心要么是A卡,要么是N卡,有的厂商都两个核心都用,开发各自的版本。他们不自己研发GPU(显卡的cpu称为GPU),只是在人家的基础上做本地化开发。这种关系就像安卓手机和安卓原生系统一样。
话说我在2003年的时候见过一块特别霸气的显卡,这块显卡一看就是发烧级的。为什么呢,一般的显卡是要插在主板上的,由于这块显卡做得特别大,看上去感觉像是主板插在了显卡上。
显卡是pci设备,所以是安装在主板上pci插槽上的,pci总线是共享并行架构,并行数据就要保证数据发送后必须同时到达目的地,因为这关系到数据的顺序,不能发过去后成一团乱麻。如8位并行总线就需要同时发送这8位,接收方也要同时接收这8位才行。虽然貌似并行传输是高效的,但对于要保证同时接收n位数据,这是有困难的,随着并行数据的位宽越来越大,这种困难也越来越明显。于是串行传输很好的解决了这一问题,一次只发一位,这样顺序问题解决了,数据到目的地看再组合到一起就成了。于是就有了PCI Express总线,这就是串行设备,简称pcie。现在的显卡都是串口的了。包括上面说的A卡和N卡。有同学会问吧,一次一位地传输,那多慢啊,听上去不如并行传输快。但大家不要忘记了,传输速度一部分取决于并行的数据量,还要取决于传输频率呢。串口显卡一次虽然只传输1位,但人家传输的频率快啊,不光是显卡,现在的硬盘都是串口的,可见串行传输速率可是极高的。
背景相关知识再说就啰嗦了,总之以后我们的输出都是通过直接操作显卡来实现的,而显卡给我们的输入接口是显存和端口,我们主要用的是显存。显存做为接口,说白了,就是它把显存直接给我们用,说:“把你要输出的内容写到这里面,我照着往屏幕上打印”。
好啦,本节到这儿结束了,客官再来玩哦。
【再续】