My Proposal

Well, I finally submitted my proposal last night in the LAST MINUTE!
6 hours before deadline, I submitted my first draft proposal. 2 hours before deadline, I have a really enlightening discussion with foka, aurel32, r0bertz, marga etc. They suggest me to change the name and most importantly they suggest I should create a generic N32 ABI porting instead of just optimized for Loongson 2F. And then we can make hardware specific optimization for Loongson 2F later using benchmarks to see how much improvement can we get compared with N64, O32 ABI. I think that is really a good plan so I decide to modify my proposal. And after taking foka’s kind-hearted advice on some spelling checks and grammar, I noticed that deadline is just 45 min away….

Well, the rest can be figured out by most people. I’m just like “热锅上的蚂蚁“(An ant on a very hot pot). I rush to modify the title and abstract since they’re the part seen by most people. And I save my proposal every time I change it a little in case google is impatient to wait the last few minute….However, at last I still failed to mention Debian-mips mailing list foka told me and leave my proposal kind of a hybrid someway…

Anyway, I’ve got a few days to comment under my proposal to clarify things and no rush this time I hope.

Down below is my proposal

Abstract:
This project first focus on creating a new MIPS N32 ABI port for Debian. Different from O32 and N64, N32 is a address model which has most 64-bit capability but using 32-bit data structure to save space and process time a lot. A second focus will be given on making such a “mipsn32el” arch fully optimized for Loongson 2F CPU which gains more and more popularity in subnotebook/netbook.
Content:
Proposal

Name: Sha Liu

Email: sandyleo26@gmail.com;

Background:
I’m now pursuing my master degree in Fudan University in Shanghai. I major in Micro Electronics and choose EDA software development as my research interest. I have experience with C/C++ programming in a FPGA EDA software project in my lab, in which I’m in charge of : a verilog parser using flex/bison; a netlist viewer using MFC. I’ve taken part in a Altera held competition with 2 other students in which we design and implement a “wireless multimedia monitoring system” which won us an outstanding reward finally. I have also some experience in porting linux to Xilinx and Altera’s FPGA development board although I just mainly copy other people’s pioneering work.

Besides the technical background, the best reason I give myself as the best person for this project are is I’m extremely fascinated by the open-source software development and joining in GSoC project is a precious opportunity to learn about it, including from mentors, developers and other students like me. Another reason worth to be mentioned is, I’m very proud to port one of the most popular and also my favorite linux distribution to Loongson, which is all designed by my own country. Loognson will not only benefit from the large amount of packages in Debian, but also from its talented developers and its influence in FOSS world.

Project title:
Creating a new MIPS N32 ABI port for Debian

Synopsis:
This project first focus on creating a new MIPS N32 ABI port for Debian. Different from O32 and N64, N32 is an address model which has most 64-bit capability but using 32-bit data structure to save space and process time a lot. This is a generic MIPS-III N32 port so modify it in different endian system and make optimization in some specific N32 MIPS arch is only a trivial thing. The second goal of this project is to make such optimizations in Loongson 2F CPU which is a MIPS architecture cpu developed at Chinese Academy of Science. It is reported that this optimization will fully utilize Loongson 2F’s 64-bit capability and push its performance to utmost [1]. The work will start from porting a minimal version of system and then extended to porting X window system, basic desktop environment and finally start porting useful applications. There is a long way to go to finally build a full mirror of all Debian packages, however my work will only focus on the most initial and basic part of this whole project.

Benefits to Debian:
With the growing popularity of Loongson 2F based computers such as Gdium Liberty 1000 Netbook, Lemote Yeeloong 8089 Notebook and Fuloong, there is a great need and interest to have Debian running at top performance on these machines, especially to serve the greater cause of promoting free/open-source software and of providing computer-assisted education to those who most need it. This work will also make Debian more “universal” by adding a new arch and more popular through its use in Loongson based computer that it’ll attract more talented people to contribute to Debian.

Deliverables:
The first three should be achieved with no excuse while the last task seems to unlimited. So I just list two well-know apps and will work more on the rest if time allowed:
1).A minimal basic system of Debian fully optimized with N32 ABI
2).Providing Benchmarks to measure improvement between fully optimized version of Debian and mipsel version, which also evaluate system performance as a whole instead of just compilation time[1].
3).X window system and basic desktop environment
4).Migrating Iceweasel and OpenOffice.org

Project details:
As discussed with in IRC with foka, marga, r0bertz, aurel32, it is better to build a generic N32 ABI port at first and then we can use benchmark to fully study its performance compared with O32, N64 and N32 ABI optimized for Loongson 2F. I list jobs to be done down below:

I will start the porting just like others by following CLFS instructions to build a minimal system with N32 ABI optimized. So that will include : building cross-compiled toolchain(gcc, glibc, binutils etc.) and a temporary minimal linux system(more utilities such as Bash, Ncurses etc. ) by using the toolchain generated above. Besides that, kernel, bootloader and other few utilities should also be built since I’ll work under x86 and build target system for mips architecture. Another thing to note is that since gcc-4.4 is optimized with Loongson CPU such as providing instruction, pipe-line model and scheduler support, using this version in the target system is an obvious choice though it’s not released officially yet.

After a minimal system is installed, benchmarks should be provided to show the improvement caused by the optimization. There is a convincing report by a Gentoo developer and also a Loongson guru, said “coreutils compilation time reduced from 19 minutes to 12 minutes” and “30% overall speed improvement”. So the benchmarks should test against this report and besides these results, more tests should be run to treat the system performance as a whole instead of just choosing compilation time.

The rest of the time will be devoted to porting X, basic desktop environment and other applications. Porting applications should be a collective job in community rather than a single person’s work. Making this job explicitly public will attract more people and will accelerate the pace of porting Debian to Loongson remarkably.

As above mentioned, a Gentoo developer has already pioneer this work using “-march=loongson2f -mabi=n32 -mplt”[1][2]. This can be a good starting point for my work since he has already submitted a few patches and applications for users to test.

Project schedule:

These timeline are fairly simple and inaccurate, however I’ll be very glad to change it with advice from foka and other people as time goes by.
Preparation Stage, April 20th~May 10th : Get started and porting a minimal version of Debian to Loongson optimized with N32 ABI.
Mid-term stage, May 11st~July 5th : 1).Compare the systems by providing benchmarks to run under different arch(mispel) or address model(O32 or N64). 2).Migrating X and Basic desktop environment and other utilities to the system.
pre-Final stage, July 6th~Aug 13th : 1).Release a ‘testing’ version of Loongson based Debian on the internet to let volunteers in the community to try and test. 2).Track bugs and fix them. 3)Port other useful packages.
Final stage, Aug14th~Aug 23rd : Fix bugs, send patches, document the project and submit it to Google.

Other summer plans:
None, really. Idling on internet or playing wow if it’s counted.
Exams and other commitments:
No exams anymore. A little work involved with TA though.
If you are a Debian Developer:
Not yet.
If you are not Debian Developer:
Actually I’m the only Debianer in my whole lab(>100 students, lots of sub-labs), amazing huh?! Considering RH is not free, less packages and Ubuntu as a unstable version of Debian, there is no obvious reasons to ignore Debian. As a firm fans of Debian, I feel the need to promote the popularity of it, first in my lab and then on internet. As a relatively young Linuxer, I may not help people to solve their complicated problems but I can do tutorial jobs(like posting HOW-TOs) easily and happily. IMO, getting Debian more popular in China will be a very attractive idea since the user base in China is very large and due to this fact, more potential contributors will be led to FOSS world due to the effort Debian has made.

I was very lucky to find this project almost near the end of application. This project is a very precious chance for me in two reasons. It will provide me a environment in which I can learn a lot of interesting things and cool skills from mentors, developers and other students. I treat this project not as a assignment to finish but as a door leading to the great un-known world. Besides, the project involves Loongson 2F cpu which every Chinese people is proud of. And if i could port Debian, which is the best Linux distribution in my opinion, to Loongson, this summer will definitely be the most unforgettable summer in my life. So I’ll be very very happy contribute to this project in and after this summer.

Reference:
[1]: http://www.lemote.com/bbs/viewthread.php?tid=20125&extra=&page=1
[2]: http://dev.gentoo.org/~redhatter/mips/loongson/

Advertisements

Tags:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: