IBM DeveloperWorks has published a tutorial on GNU Compiler Collection (GCC) version 4. Written by Tim Jones, "Get to know GCC 4" describes the upgrade's new Tree SSA optimization framework and intermediate code representation, OpenMP multi-threading, and novel approaches to target and language support.
Jones starts with a brief overview and history of GCC, starting with Richard Stallman's release of GNU C Compiler in 1987. GCC is the world's most popular compiler toolchain, writes Jones, who indicates that its code can be used to build compilers for Ada, Fortran, Java, C++, and Objective-C. GCC 4.0, which he says represents a major transition from version 3, covers 30 processor families and runs on more than 60 platforms.
"GCC is the cornerstone of development in both the open source and closed source worlds," writes Jones, a consulting engineer at Emulex. However, the compiler collection is of particular importance to embedded Linux development, he continues. Linux "is widely successful because it is run on so many different architectures," he writes. "Once again, a port of GCC to the target environment enables Linux to be ported and run on it. Without trying to put too fine a point on it, GCC paves the way for Linux and embedded development."
Tree SSA and autovectorization
After this pep talk, Jones gets down to business by describing the basic compiler stages of GCC 4.0, as well as the major 4.x enhancements. In particular, he describes the new optimization framework, which uses the new tree Static Single Assignment (Tree SSA) form. Unlike the pre-existing, low-level Register Transfer Language (RTL) framework, Tree SSA can better deal with higher-level information and "is designed to be both language independent and target independent while supporting improved analysis and richer optimizations," writes Jones. He goes on how to explain how Tree SSA interacts with the new intermediate representations, Generic and Gimple.
Jones also explains the novel "autovectorization" feature, which "allows the compiler to identify scalar processing loops within code that can benefit from vector instructions available in the target processor." This loop vectorization helps produce tighter, more efficient target code, he continues. Another loop-based optimization called Swing Modulo Scheduling (SMS) helps developers construct instruction pipelines "with the goal of minimizing cycle counts by exploiting instruction-level parallelism," he writes.
Jones finishes up by exploring features added in subsequent versions, for example:4.1 -- improved profiling support, more accurate branch probability estimation, better inline support, and the ability to exploit the instruction cache locality
4.2 -- OpenMP multi-threading implementation for generating code for task and data parallelism; enhanced language and processor support (Sun UltraSPARC T1 and Broadcom SB-1A MIPS core)
4.3 -- Support for processors such as Coldfire, IBM System z9 EC/BC, Cell's Synergistic Processor Unit (SPU), SmartMIPS, and others; new support for Thumb2 (compressed ARM instructions) and ARMv7, and tuning support for Intel Core2 and AMD Geode processorsAvailability
The full IBM DeveloperWorks tutorial by Tim Jones, "Get to know GCC 4," should be available here.
Eclipse rev’s mobile Java IDE
Maemo gains KOffice port
Beastie Boys add dates to Obama tour
(Reuters)
This entry was posted
on 12:48 PM
.
Archives
-
▼
2008
(457)
-
▼
November
(64)
- Blockbuster box runs Linux
- Linux-focused smartphone vendor announces cuts
- GCC for kernel hackers
- Linux hops on STD bus
- Linux provider touts support award
- Virtualization technology targets multi-core ARM
- Closed Linux driver problems described
- Palm Pilot VM for Linux updated
- Robotic arm runs Linux
- World's smallest humanoid robot can run Linux
- iPhones to xhost Linux apps
- Open phone goes robotic
- DRM client ported to mobile Linux distro
- Linux connects TVs to 'Net video
- Linux-ready MILS kernel gains POSIX
- USB Linux key targets netbooks
- Mot camera-phone runs widgets
- Die-shrunk x86 SoC draws 2 Watts at 1GHz
- Webinars explore RTOS-to-Linux driver migration
- Mini-ITX board has HDMI port
- Via panel PC resists shock, liquids
- Papers sought for Embedded Linux Conference
- Multimedia processor plays H.264 video
- MontaVista touts Android readiness
- USB 3.0 debuts
- Rugged Linux wrist computer upgraded
- Debian Lenny blinks its peepers
- Debian Lenny blinks its peepers
- Linux barcode scanner uses OLED display
- RJ-45-sized Linux server upgraded
- World Wide Web ensnaring the living room
- Linux spy cam streams to 3G phones
- EPIC SBC runs hot and cold
- Spotlight on Moblin.org Linux
- Voting-machine firm sued for GPL violations
- "Pico" projector demo'd
- NEP partners with Linux vendor on 3G gear
- Linux vendor touts infotainment stack
- Linux house offers flash life expectancy modeling
- VMware goes embedded
- Worst-ever software security blooper?
- Commercial GNU tools expand debug support
- Linux fast-boot scheme targets TVs
- BIOS vendor promises simultaneous Linux, Windows s...
- Linux, netbooks threaten Microsoft's fat profits
- Embedded Linux PC does external PC/104 stacks
- Linux powers OMAP3x bring-up tool
- Asus (re)spins $200 netbook
- DIY Linux subscription targets ARM11 SoC
- MIDs face tough climb?
- Webinars offer fast-boot tips
- Real-time JVM takes on multi-core
- Web-dev IDE revs up
- Customizable PowerPC board comes with Linux
- Cortex-A8 SoCs gain Linux GUI toolkit
- Dell spins dual-core thin client
- Tutorial gets chummy with GNU compilers
- Intel, Taiwan tag-team Moblin, WiMAX
- Linux, ATCA rising
- Linux BSP ships for Geode-based SBCs
- "MiniBlade" spec targets miniature mass storage
- Industrial Linux gains ADA 2005 tools
- Embedded ATX boards sport four cores
- COM Express module targets display systems
-
▼
November
(64)