标题:CPU是怎么知道哪些问题要给GPU处理的
只看楼主
wobianlong
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-8-1
结帖率:92.86%
已结贴  问题点数:20 回复次数:19 
CPU是怎么知道哪些问题要给GPU处理的
这个问题一直困扰着,显示器上是输出是不是在显存里面的
但是最最主要的问题是,CPU怎么判定哪些程序(代码)交给GPU啊
显卡的东西到底是从内存读取的,还是从CPU里面读取的还是CPU写进显存的
先假设某处内存中存在一个字符A,具体显示到显示器的细节是怎么实现的呢
搜索更多相关主题的帖子: 显卡 
2012-08-14 23:28
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:10 
对于目前的操作系统来说 这其实是由程序或者说是代码决定的

比如firefox 你开了硬件加速 那么 一部分渲染工作就由显卡来做 如果你关了 那么渲染就由CPU来做 flash也有类似的选项

再具体 所谓的给GPU 其实就是用了这些显卡的接口或开发库 也可能用的是openGL DirectX这样的通用库来做的

总结 其实 这些不是由CPU决定的 是人或者说是编程者决定的 他想怎样就怎样


[ 本帖最后由 zklhp 于 2012-8-14 23:54 编辑 ]
2012-08-14 23:32
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
你的疑惑 可以通过学那些DOS编程知道个大概 但现在的显卡 操作系统 都比过去的复杂多了 比如你说的这个显存罢 现在一个东西要显示到屏幕上可不止有一个缓冲罢 有在内存里的缓冲 有在显存里的 很复杂 具体的硬件实现我也不知道喽 只能大概说 基本原理还类似DOS时代的写缓存。。
2012-08-14 23:36
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
先假设某处内存中存在一个字符A,具体显示到显示器的细节是怎么实现的呢

你还举这个例子 说明你还是停留在DOS那个图像的时代 你看看你的屏幕 这么丰富的内容 可能是由ABCD这样的简单字符组成的么。。
2012-08-14 23:39
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
如果你很好奇 建议你学以下的东西深刻认识这个问题

1 计算机组成原理
2 linux操作系统的实现 特别是X-window的相关东西
3 openGL等图形库

如果这三个都学了 你应该能回答你问的问题 为啥学linux系统呢 因为是开放的 不过事实上相应的资料很少 所以你得会钻研 英语好 会读代码。。。

如果你只是好奇 我觉得上面的已经够多的了 具体有啥不懂你再问罢 我知道的都能说
2012-08-14 23:43
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:10 
Z版不仅知道的多,指导的还很详细。

估计他是新手,对这个问题比较感兴趣,等他真想研究底层几天以后估计就觉得知不知道也无所谓了。即使把 DOS 那个年代的实现机制全搞清楚,也不是那么容易的。
2012-08-16 11:49
wobianlong
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2012-8-1
得分:0 
谢谢版主回答了那么多,但是我还是没怎么听懂,可能是我自己的理解问题
显卡的东西是CPU写进去的吗?还是从内存读取的?
显卡能直接和内存通信吗?
就一个C语言或者汇编程序来说?找不到具体的往显存写东西的代码,莫非是编译器?
不说输出一个字符了
说说打开一张图片的过程,我自己的理解是,CPU 通过主线 从硬盘读取一张图片,然后(放进某个内存中)需要这个过程吗?还是直接输出都显卡,图片处理程序来解读图片的字符流,又或者说那个图片处理程序会在GPU中运行?
版主讲解下 具体的过程 比如读取一个电影

我听到有人问为什么,就用光一样的速度从大爆炸时代赶来了,遍布于世界各地的危险
2012-08-21 09:06
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
以下是引用wobianlong在2012-8-21 09:06:46的发言:

谢谢版主回答了那么多,但是我还是没怎么听懂,可能是我自己的理解问题
显卡的东西是CPU写进去的吗?还是从内存读取的?
显卡能直接和内存通信吗?
就一个C语言或者汇编程序来说?找不到具体的往显存写东西的代码,莫非是编译器?
不说输出一个字符了
说说打开一张图片的过程,我自己的理解是,CPU 通过主线 从硬盘读取一张图片,然后(放进某个内存中)需要这个过程吗?还是直接输出都显卡,图片处理程序来解读图片的字符流,又或者说那个图片处理程序会在GPU中运行?
版主讲解下 具体的过程 比如读取一个电影

显卡的东西是CPU写进去的吗?还是从内存读取的?

应该是内存到显存罢

显卡能直接和内存通信吗?

能罢

就一个C语言或者汇编程序来说?找不到具体的往显存写东西的代码,莫非是编译器?

目前的程序没有直接的代码来操作显存的了 要么是用操作系统的API 要么用openGL一类的库 要么用显卡的API 总之 基本没有直接操作的了 都隐藏了

不说输出一个字符了
说说打开一张图片的过程,我自己的理解是,CPU 通过主线 从硬盘读取一张图片,然后(放进某个内存中)需要这个过程吗?还是直接输出都显卡,图片处理程序来解读图片的字符流,又或者说那个图片处理程序会在GPU中运行?

应该是硬盘到内存再到显存 而实际中内存到显存一般是操作系统完成的 也不是简单的复制到显存这么简单罢 应该是通过相应的驱动实现的 然后由驱动完成内存到显存的复制

程序一般还是在CPU中运行的 目前绝大部分程序都是在CPU中运行的 少部分程序是由CPU和GPU共同完成运算的 完全GPU运行的程序目前很少

版主讲解下 具体的过程 比如读取一个电影

读取电影 CPU解码 画面经过接口给显卡 显卡再输出到显示器上 这是非【硬解】电影的播放过程

我上面一直在说的一个东西就是接口 对于非底层开发者 会用接口很重要 就好像printf()函数 这个函数怎么写的你不用关心 你会用就可以了 对于这种操作硬件的东西 更要通过接口 像DOS时代那种直接操作硬件目前已经很难实现了 即使是用汇编也一样 当然用接口也有很多缺点 带来一些问题 如果你有兴趣 可以根据我上面说的那些研究这个具体怎么实现的 不过 如果你不是专业搞底层开发 搞明白没意义 我都不是搞计算机的更不会搞明白了 呵呵
2012-08-21 14:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
呵呵,我看你怎么答。

授人以渔,不授人以鱼。
2012-08-21 14:26
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
以下是引用TonyDeng在2012-8-21 14:26:56的发言:

呵呵,我看你怎么答。

大牛也来取笑我了。。
2012-08-21 14:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-379512-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.144973 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved