To Thumb or Not to Thumb

From CDOT Wiki
Revision as of 18:42, 14 December 2010 by Tyler.lee (talk | contribs) (Test results)
Jump to: navigation, search

Project Name

To Thumb? or Not to Thumb?

Project Description

Fedora-ARM does not use thumb. The purpose of this project is to discover whether thumb provides any significant savings in terms of code size, whether programs compiled to thumb execute more quickly or more slowly than non-thumb programs on common ARM processors, whether a thumb compilation takes more or less time than non-thumb, and whether there are any other factors that would influence the decision to support thumb. Ultimately, this project should make a recommendation on the use of the thumb instruction set for the Fedora-ARM secondary architecture.

Project Leader(s)

I will be working alone for this project.

My name is Tae Hee (Tyler) Lee and I'm taking SBR600 course in 2010 Winter Semester.

Blog @ [[1]]

thlee3 @ FAS2

thlee3 @ irc://irc.mozilla.org/seneca

Tyler.lee @ Open Source Seneca Wiki

thlee3@learn.senecac.on.ca

What I need to learn

- rpmbuild
- /usr/lib/rpm/redhat/rpmrc
- /usr/lib/rpm/redhat/macros
- time
- screen
- yumdownloader
- rpm2cpio

Project Plan

Goals for each release:

  • 0.1 Determine whether THUMB gives advantage in file size compared to NON-THUMB.
  • 0.2 Compare and contrast file sizes between NON-THUMB, THUMB and THUMB2.
  • 0.3 Compare the performance of software compiled with THUMB and NON-THUMB

Test results

Following are the table of file sizes that are produced by rpmbuild in bytes.

nled-2.52
Produced RPM: nled-2.52-6.fc12.armv5tel.rpm
Directories and files: 2 directories, 1 file
Binary File: usr/bin/nled
w/o Thumb THUMB THUMB2 THUMB / NON-THUMB THUMB / THUMB2
RPM 20776 20204 20328 0.9724 0.9939
Directory 50892 43084 42684 0.8465 1.0093
Binary 38604 30796 30396 0.7977 1.0131



wget-1.11.4
Produced RPM: wget-1.11.4-5.fc12.armv5tel.rpm
Directories and files: 86 directories, 48 files
Binary File: usr/bin/wget
w/o Thumb THUMB THUMB2 THUMB / NON-THUMB THUMB / THUMB2
RPM 422360 420788 419852 0.9962 1.0022
Directory 1863679 1811467 1810431 0.9719 1.0006
Binary 226464 174252 173216 0.7694 1.0060



httpd-2.2.13
Produced RPM: httpd-2.2.13-4.fc12.armv5tel.rpm
Directories and files: 37 directories, 334 files
Binary File: usr/sbin/httpd
w/o Thumb THUMB THUMB2 THUMB / NON-THUMB THUMB / THUMB2
RPM 748180 738632 736500 0.9872 1.0029
Directory 2752985 2425373 2408025 0.8810 1.0072
Binary 287988 233660 229712 0.8113 1.0172



gimp-2.6.7
Produced RPM: gimp-2.6.7-2.fc12.armv5tel.rpm
Directories and files: 206 directories, 1204 files
Binary File 1: usr/bin/gimp-2.6
Binary File 2: usr/bin/gimp-console-2.6
w/o Thumb THUMB THUMB2 THUMB / NON-THUMB THUMB / THUMB2
RPM 12423104 12431184 12350600 1.0006 1.0065
Directory 45780103 43891439 43730427 0.9587 1.0037
Binary 1 4284848 3450936 3371440 0.8054 1.0236
Binary 2 2131228 1688860 1656092 0.7924 1.0198



abiword-2.8.1
Produced RPM: libabiword-2.8.1-1.fc12.armv5tel.rpm
Directories and files: 39 directories, 617 files
Binary File: usr/lib/libabiword-2.8
w/o Thumb THUMB THUMB2 THUMB / NON-THUMB THUMB / THUMB2
RPM 5561088 4779800 4742828 0.8595 1.0078
Directory 21295155 17055836 16987340 0.8009 1.0040
Binary 5806908 3450936 3371440 0.5943 1.0236



tar-1.22
Produced RPM: tar-1.22-8.fc12.armv5tel.rpm
Directories and files: 79 directories, 49 files
Binary File: bin/tar
w/o Thumb THUMB THUMB2 THUMB / NON-THUMB THUMB / THUMB2
RPM 744340 742784 742180 0.9979 1.0008
Directory 2737195 2681159 2675975 0.9795 1.0019
Binary 251844 195808 190624 0.7775 1.0272



cpio-2.10
Produced RPM: cpio-2.10-5.fc12.armv5tel.rpm
Directories and files: 49 directories, 30 files
Binary File: bin/cpio
w/o Thumb THUMB THUMB / NON-THUMB
RPM 189908 189276 0.9967
Directory 842194 816194 0.9691
Binary 117064 91064 0.7779



gzip-1.3.12
Produced RPM: gzip-1.3.12-15.fc12.armv5tel.rpm
Directories and files: 9 directories, 33 files
Binary File: bin/gzip
w/o Thumb THUMB THUMB / NON-THUMB
RPM 116560 115736 0.9929
Directory 263922 252086 0.9551
Binary 61708 49872 0.8082



bzip2-1.0.5
Produced RPM: bzip2-1.0.5-6.fc12.armv5tel.rpm
Directories and files: 7 directories, 21 files
Binary File: /usr/bin/bzip2
w/o Thumb THUMB THUMB / NON-THUMB
RPM 49476 49232 0.9951
Directory 109233 103449 0.9470
Binary 33024 28076 0.8502



From a test performed on 2011-11-12 by CTyler:

........ -O2.. -g... -g stripped
nonthumb 48576 98132 37900
thumb... 40563 93107 29932

Project Details

To be added.

Project News

October 8th, 2010 - Project started

October 14th, 2010 - Major project page update with more information.

Resources

ARM Architecture - http://en.wikipedia.org/wiki/ARM_architecture#Thumb

Introduction to ARM thumb - http://www.eetimes.com/discussion/other/4024632/Introduction-to-ARM-thumb