CS 与团队建设

高三高考完放暑假的日子里最快乐的一件事就是一群人跑到网吧打cs

当时专业战队还不多,所以,盘踞在各个网吧的都是鱼龙混杂

当时我的几个同学都还算又天资。

一般的小网吧,都能平掉。。。。

 

昨天的会,让我隐约感觉到了当年到处平网吧的感觉,只是对手和我们一样烂。。。 

concepts

指令集,ABI,应该包括汇编和编码两级。

那么位长是指指令的长度,数据lip(long:int:pointer) 的长度,还有相应的地址空间大小么?

位长是表示虚拟地址的长度,例如龙芯所谓的64位,就是说处理器只支持64为的虚拟地址模式。

全相连(set-associate),映射机制,几路 (n-way)的TLB是啥意思呢?

非阻塞cache的概念是允许Cache失效访存操作后面的多个Cache失效或命中的访存操作继续进行,来提高系统的整体性能。

 

一段缓冲区

这听上去算是一段不错的时光和机会, 一定要抓住。

好好规划,实在公关!认准了方向就死磕!

 

先在可选的方向有编译工具和环境,gcc是基础, , llvm是方向 (不怎么靠谱,但是编译原理一定要补上,并且这个层次已经是工业级的了,而不仅仅是原理这个层次了)。

一个基础的方向是操作系统基础构建,主要是pmon和内核的优化,最主要的问题是对龙芯和mips的体系指令集和架构的了解和熟悉,蛮重要的。

第三点也是很基础的一点,就是性能评测工具,我觉得可以归到profiling一类,这类的工具,会用明白原理就好,但是硬件支持的oprofile应该是主流,本来龙芯就支持

oprofile,会用,也不容易呢。

最后一个方向就是应用软件优化,这个要求可谓是非常高了,一者要有扎实的计算机算法基础(废话。。。),二来要有第二,三点的基础,否则没法优化和评测,最重要的是要知道软件的基本结构和特点,并且对源码有一定程度的熟悉,这个最要命,否则你根本不知道从何入手。。。。

如此说来,第四点可以忽略不计了。。。(或者说从长计议。。。)

前三点齐头并进不好说,(取舍抉择总是很难。。。),这个节骨眼,还是坚持务实于远见的原则(这俩常常矛盾)。

第二,三点最务实,第一点最有远见。

怎么结合。。是一个人最大的功底咯。。。

 

说这么多都是扯淡,just do it ,看哥的吧。。。

 

实用主义。。。我一贯的行事风格,无论什么事,就像开车一样,先让车子跑起来再说。

让车子跑起来的几个论题:

在车子上调试些基本的汇编代码,找找感觉。。。完全没问题。。。这个既可以熟悉车子,也可以熟悉pmon 。 

 

rss visualizer

这个屏保程序很帅。。。很有发展空间。。。 

统一计算平台

在想关于xx的优化,比较看重的是应用程序优化,比如MPlayer的优化方式的通用化。

其次是泛意的增加桌面平台的互动性,这个问题显然有点大,但是也算是个突破口。

第一个问题就是通用化,设计编译器和系统级的优化。。。貌似题目太大了。

而通用计算平台则是着眼于未来,到时候,不管是没有gpu还是统一化,通用计算都有的搞,只是不知道软件过度到硬件后,软件还有什么好搞。

尽管这么想有点杞人忧天了。。。

 

说了这么半天还是一点没有落到实处,因为我还不知道实际的模型的细节是什么样的。。。模式知道。。细节不知道 

rpmbuild得交叉编译

主要得问题在于修改configure过程中设定的host参数。

由于rpm系统有自己定义的洪指令,因此可以考虑修改宏指令来改变全局的编译属性,使能交叉编译。

程序员得人生原则

 程序员得人生原则就是,做任何事之前,都不要动手,而是写脚本

风声水气,系统构建

 人生就是爬树,从树根爬到树梢,再飘落,或者摔落。。。。

我们又走到了一颗枝杈面前。

得到了宝贝工具,一方面要继续实验,比较clfs很多参数和脚本还不知道什么意思。

另一方面,我们要乘胜追击,直奔系统构建看看,我们该选哪条路呢,那么都又哪条路呢:

 其实生死抉择之前还有一小步,构建一个temp 系统。好吧,忽略了吧。。。。

 

配置参数

配置参数如果编译完了就扔掉的话。。。那

这遍编译算是白干了。。。

所以,对于一遍小漫长等待的编译而言。

编译参数才是更重要的资源,这也就是CLFS存在的原因。

感谢伟大的差分方法,我们可以只记录对于CLFS的配置参数的改动情况。

但是一定要记一下:

好吧我现在开始记咯:

CLFS编译eglibc,顺利启动。

并进入交叉编译,遇到找不到socket.S错。

跑到eglibc/ports/下一看,mips确实没有socket.S这个文件,而其他几个架构有的有有的也没有。

去掉enable-add-ons这个选项,错误依旧。 

 

检查发现 glibc中没有这个 /sysdeps/unix/sysv/linux/internal_accept4.S 这个文件

那么eglibc 为什么有这个文件呢,还有就是 eglibc的ports为什么不做好部署呢?难道是做了不熟,我们没有下载正确??damn....!

只好继续分兵两路,继续查找正牌的eglibc-ports

另一方面,把glibc拿过来编译编咯。。。果然glibc编的风生水起,呼呼就过了。。。

并且查到原来着eglibc是一个嵌入式版本,但是对glibc还是有所扩充的。。。好嘛。。这扩充差点没给我扩没了。。。

 这么说来应该可以到官网上找个正牌版本耍耍。。。先压倒栈里,待glibc编gcc失败了再说的。。。

 

好了,又要编gcc-final了,上次爷就折在这了。。。这次再来过过招。。。

 我真的不敢相信,风生水起的编过了。。。。窃窃的make install了下。。。就这么结束了。。。像是ml一样,想起来惊心动魄,实际上漫不经心。。。

 

同样像每个漫不经心xx过后,总是会迷茫,迷茫过后总是会振奋。

我小迷茫一下,下一步该干什么?

我小振奋一下,开始风生水起的编系统吧,大幕缓缓拉开。。。

还是那个验证方法,先编个内核瞅瞅?

其实更重要的在于。。。编译系统的步骤是什么?怎么样才能最自动话的编出一个系统来?

不用考虑快慢,反正基本工具已经有啦。。。

流水线的一点体会

流水线这个原理再简单不过,但是原理总作为理论来理解,再简单也不深刻。

下面谈谈实际的体会:CLFS         到   Pipeline

CLFS的每个步骤相当于计算机得到的指令。

那么,是不是要一个挨着一个的编译呢,理论上是这样的,这个顺序还是要遵守的,否则会影响一些依赖性。

那么好,每个编译步骤细分:下载包和patch,解压,配置,编译,安装

其中,下载可以batch完成,但是其余步骤必须一个挨一个的来。