2014年11月29日

编写一个操作系统内核

摘要: 学习操作系统最好的方式当然是实现一个系统内核。自己从零开始写一个完整的内核会消耗大量时间在一些小细节上。MIT 6.828课程“Operating System Engineering”就提供了很好的实现一个系统内核的素材,该课程最终实现一个完整的包含“内存管理”、“中断处理”、“进程调度”、“网络... 阅读全文

posted @ 2014-11-29 23:53 tuituji 阅读(747) 评论(0) 推荐(0) 编辑

编写COOL编译器

摘要: Coursera上面有Stanford的课程“Compilers”,该课程使用“龙书”作为参考书,并有一个编程项目,完成一个完整的编译器。这个编译器支持的语言称为COOL,是一个面向对象的用于教学的语言,支持完整的面向对象特性。COOL项目给出了一些基础源码,学生在这个基础源码上实现词法分析、语... 阅读全文

posted @ 2014-11-29 23:43 tuituji 阅读(1017) 评论(0) 推荐(0) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(11)——R600指令集

摘要: 1 低级着色语言tgsi OpenGL程序使用GLSL语言对可编程图形处理器进行编程,GLSL语言(以下高级着色语言就是指GLSL)是语法类似C的高级语言,在GLSL规范中,GLSL语言被先翻译成教低级的类汇编语言,然后被翻译成硬件特定的指令集。OpenGL体系管理委员会于2002年6月和2002... 阅读全文

posted @ 2014-11-29 23:25 tuituji 阅读(2598) 评论(1) 推荐(1) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(10)——R600显卡的3D引擎编程

摘要: 3D图形处理流水线需要流经多个硬件单元才能得到最后的渲染结果,流水线上的所有的硬件单元必须被正确编程,才能得到正确的结果。 总体上看,从图形处理流水线的源头开始,需要准备好vertex和index,在立即模式下,index可以直接编程在命令中,通过配置寄存器告诉GPU vertex buffe... 阅读全文

posted @ 2014-11-29 20:53 tuituji 阅读(3601) 评论(1) 推荐(1) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(9)——R600显卡的3D引擎和图形流水线

摘要: 1. R600 3D引擎 R600核心是AMD一款非常重要的GPU核心,这个核心引入了统一处理器架构,其寄存器和指令集同以前的GPU 都完全不同,对其编程也有比较大的区别。 图1显示了R600 GPU 核心的硬件逻辑图,R600 GPU 包含并行数据处理阵列(DPP array)、命令处理器、内... 阅读全文

posted @ 2014-11-29 16:30 tuituji 阅读(3291) 评论(0) 推荐(1) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(8)——AMD显卡DRM驱动初始化过程

摘要: 前面几个blog对DRM驱动、显卡的显存管理机制、中断机制都进行了一些描述,现在阅读AMD drm驱动的初始化过程应该会轻松许多。 下面是一AMD的开发人员编写的文章(先暂时放在这里,后续有时间再添加自己的看法)。Understanding GPUs from the ground upI g... 阅读全文

posted @ 2014-11-29 15:37 tuituji 阅读(3562) 评论(0) 推荐(1) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(7)——AMD显卡的软件中断

摘要: CPU上处理的中断可以分成“硬件中断”和“软件中断”两类,比如网卡产生的中断称为硬件中断,而如果是软件使用诸如"int 0x10"(X86平台上)这样的指令产生中断称为软件中断,硬件中断是异步的,其发生的时机是不可知的,但是软件中断是同步的,CPU是“确切”知道其发生的时机的。 同样的,在GP... 阅读全文

posted @ 2014-11-29 15:04 tuituji 阅读(2853) 评论(0) 推荐(1) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(6)——AMD显卡GPU命令格式

摘要: 前面一篇blog里面描述了命令环缓冲区机制,在命令环机制下,驱动写入PM4(不知道为何会取这样一个名字)包格式的命令对显卡进行配置。这一篇blog将详细介绍命令包的格式。 当前定义了4中命令包,分别是0型/1型/2型和3型命令包,命令包由两部分组成,第一部分是命令包头,第二部分是命令包主体,命... 阅读全文

posted @ 2014-11-29 14:38 tuituji 阅读(4153) 评论(0) 推荐(1) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(5)——AMD显卡显命令处理机制

摘要: 通常通过读写设备寄存器对设备进行编程,在X86系统上,有专门的IO指令进行编程,在其他诸如MIPS、SPARC这类系统上,通过将设备的寄存器映射到内存地址空间直接使用读写内存的方式对设备进行编程。 Radeon显卡提供两种方式对硬件进行编程,一种称为“推模式”(push mode)即直接写寄存... 阅读全文

posted @ 2014-11-29 06:43 tuituji 阅读(5130) 评论(0) 推荐(2) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(4)——AMD显卡显存管理机制

摘要: 显卡使用的内存分为两部分,一部分是显卡自带的显存称为VRAM内存,另外一部分是系统主存称为GTT内存(graphics translation table和后面的GART含义相同,都是指显卡的页表,GTT 内存可以就理解为需要建立GPU页表的显存)。在嵌入式系统或者集成显卡上,显卡通常是不自带显... 阅读全文

posted @ 2014-11-29 04:35 tuituji 阅读(7074) 评论(0) 推荐(1) 编辑

【原创】Linux环境下的图形系统和AMD R600显卡编程(3)——AMD显卡简介

摘要: 早期的显卡仅用于显示,后来显卡中加入了2D加速部件,这些部件用于做拷屏,画点,画线等操作。随着游戏、三维模拟以及科学计算可视化等需要,对3D的需求逐渐增加,早期图形绘制工作由CPU来完成,要达到真实感和实时效果,只能绘制一些简单的线框模型,上世纪80年代,斯坦福大学的Jim Clark教授率先提... 阅读全文

posted @ 2014-11-29 03:41 tuituji 阅读(4312) 评论(0) 推荐(1) 编辑

导航