Tuesday, December 13, 2005

Top 10 System Administrator Truths

#1 – Users Lie

Oh yes, they do. Don’t think you’re immune either. Have you ever been on a tech support call, convinced that you know the problem and the guy on the phone says something like “Would you put in the recovery CD, restart, and scan your memory?” “Oh, I’ve tried that,” you say with eyes rolling. Believe it or not, sometimes we crazy admin peeps suggest these fixes because they work. When a user is protesting my assessment, the best is to politely insist them to do what was asked until the doing is done.

#2 – Email is the Lifeblood of Non-Techies

I love my non-techie bretheren—I mean, how else would I know what happened on the OC and Gilmore Girls?—but at the end of the day, email is #1 in their book. Now a lot of it is business related, and certainly that shouldn’t be taken lightly, but most likely they were waiting on a warm, fuzzy message from their daughter or sister and really needed their email back up ASAP (“I’m waiting on a proposal!” they screech — see #1)

#3 – Printers Suck

Ever had to clean a laser or, God forbid, an inkjet printer? It’s like stabbing yourself in the eye. It’s not just the grime either—it’s the fallacy that a little chunk of ink could make the machine just stop working. 90% of the time (or better), this isn’t the case (instead, check the fuser/print heads). In terms of network troubles, HPs Jetdirect cards have a pretty solid reputation of failing every few years, so expect to shell out $200+ for those on a semi-regular basis, depending on what kind of printers you run in your office. For those with network cards integrated into the printer mainboard—what were you thinking?

#4 – Cleanliness is Godliness

Ever open up a PC and see the Ghost Of Dust Bunny’s Past in there? It’s scary stuff, I tell you. I’ve seen some PCs begin to lock up “for absolutely no reason” while the innards tell you different. Sure Peggy in Accounting wasn’t stuffing her machine full of cloth, but that blanket she keeps at her feet will slowly shed and the PC fans suck that stuff right up. When you’re completely stumped, make sure there isn’t something inside gunking up the works.

#5 – Backups are Crucial

This needs to be said. I’ve been caught with my pants down on this one a few times myself. Backup, Backup, Backup! Nothing (and I mean nothing) will bite you in the ass like a piss-poor backup schema. If your server dies right now as you read this post, what are you going to do about it? Do you know where the install discs are, do you have a configuration backup, do you know who to contact regarding tech support on that box? If not, you need to get your act together before you have a disaster and a lot of excuses and apologies following it. I use Retrospect at my job and consider it better than Backup Exec. It has amazing Macintosh support and is cheaper too.

#6 – Switches and Hubs (Usually) Die One Port At A Time

You can spend hours tracking down a bad network card or cable just to figure out that a port in a switch has died. You’re pinging and pinging and looking, the lights are on but there’s nobody home. The trick here is to know that a single port doesn’t spell the end of the hardware, quite the contrary. Don’t throw the baby out with the bathwater. If a port does go out, that hub or switch may work for years without another outage, but do be sure to stuff an RJ45 connector in that bad port so you don’t forget (and chase down phantom problems) in the future.

#7 – No One Ever Got Fired For Buying Microsoft

So sad but so true. This old saying used to reference IBM, but oh how times have changed. Linux may be powerful, but the command prompt and configuration files and filesystem obscurity will just as soon get you a pink slip if something goes wrong and no one knows how to fix it but yourself. Even so, with as much stupid crap as we admins have to put up with on a daily basis, configuring some of the ‘high end’ Microsoft software is enough to drive you insane. Ever tried installing Exchange Server or, worse, installing Exchange Server and migrating a 5.5 install to Exchange 2000? I feel your pain, oh how I feel your pain.

#8 – Politeness > Brevity

You can come up with all sorts of analogies for this one. You’ll get more bees with honey, a spoonful of sugar, etc. But generally, you probably have very little day-to-day contact with end users. This means that when you do finally get to speak to one of those souls fortunate enough to login to your domain (both figuratively and literally), you should be sure to be as polite as possible about it. Even if the network is down. Even if the server is having weird, irrational problems. Use please, thank you, I’m sorry, and don’t be too proud to apologize or ‘make nice’ with those who may ultimately influence your career path down the line. The peon you insult today with a “I sent an email about this, do you not check your own email?” could very well climb the corporate ladder and let your rude ass go in a few years. Mind your manners, peeps.

# 9 – Know Your Needs

This one could also be called “Learn Linux.” Many admins get wooed into the idea that “managed solutions” are always the correct ones. A web interface on a switch is cute, but rarely useful. A huge Cisco router may not always be necessary, sometimes a ‘lo-fi’ approach is best. When you want a spam solution, before looking at $5,000 servers and huge licensing fees for Windows Server software take a look at one of those old ‘junk’ PCs you have in the closet, download your favorite distro of Linux, and install procmail and spamassassin. You (and your budget) will thank me later.

#10 – The Holy Grail of Tech Support

…is the reboot. Rebooting can cure ailments of all sorts, can stop network troubles, crashing computers, find missing documents, and rescue cats in trees. System admins all over the world have, by and large, trained their users to reboot before even calling support. I mean, when’s the last time you didn’t reboot to see if it cured a problem? If you’re not, then you’re either stubborn or you’re an admin who knows better. Rebooting doesn’t cure all ailments, but it cures so many of them it’s hard to not throw out a “Can you reboot for me?” to the end user when they call with some off-the-wall issue. Use and abuse as necessary.



source:http://www.misterorange.com/2005/12/top-10-system-administrator-truths.html


Xbox 360 file system de-coded

The Xbox 360's DVD file system has been exposed, a coding group calling itself Pi, has claimed.

The group said it has posted source code for a utility that allows discs' files to be extracted and displayed as raw data. The group admits there's not much that can be done with it beyond explore the file-system structure, if anyone is prepared to jump through all the hoops necessary to bring code and disc contents together.


The utility runs on a PC, apparently, but Xbox 360 DVDs are incompatible with PC DVD drives. Since the code won't run on an Xbox 360, users have to create an image of an original disc then transfer that image to a PC.

The utility does not bypass copy-protection mechanisms, the group claims. More to the point, even creating and transferring an image of a disc you own is against the law - if only as a violation of the end-user licence agreement.

However, it is likely to provide the foundation for work seeking to attack the content protection put in place by Microsoft.

According to the Pi people, the Xbox 360's file-system is essentially the same as the one employed by its predecessor console: "Once you get past the protections and down to the raw bits on the disc, its just the standard xboxdvdfs, however the offset and layer breakpoint are different."

http://www.theregister.co.uk/2005/12/13/xbox_360_file-system_cracked/source:


Mice created with human brain cells

Add another creation to the strange scientific menagerie where animal species are being mixed together in ever more exotic combinations. Scientists announced Monday that they had created mice with small amounts of human brain cells in an effort to make realistic models of neurological disorders such as Parkinson's disease.

Led by Fred Gage of the Salk Institute in San Diego, the researchers created the mice by injecting about 100,000 human embryonic stem cells per mouse into the brains of 14-day-old rodent embryos.

Those mice were each born with about 0.1 percent of human cells in each of their heads, a trace amount that doesn't remotely come close to "humanizing" the rodents.

"This illustrate that injecting human stem cells into mouse brains doesn't restructure the brain," Gage said.

Still, the work adds to the growing ethical concerns of mixing human and animal cells when it comes to stem cell and cloning research. After all, mice are 97.5 percent genetically identical to humans.

"The worry is if you humanize them too much you cross certain boundaries," said David Magnus, director of the Stanford Medical Center for Biomedical Ethics. "But I don't think this research comes even close to that."

Researchers are nevertheless beginning to bump up against what bioethicists call the "yuck factor."

Three top cloning researchers, for instance, have applied for a patent that contemplates fusing a complete set of human DNA into animal eggs in order to manufacturer human embryonic stem cells.

One of the patent applicants, Jose Cibelli, first attempted such an experiment in 1998 when he fused cells from his cheek into cow eggs.

"The idea is to hijack the machinery of the egg," said Cibelli, whose current work at Michigan State University does not involve human material because that would violate state law.

Researchers argue that co-mingling human and animal tissue is vital to ensuring that experimental drugs and new tissue replacement therapies are safe for people.

Others have performed similar experiments with rabbit and chicken eggs while University of California-Irvine researchers have reported making paralyzed rodents walk after injecting them with human nerve cells.

Doctors have transplanted pig valves into human hearts for years, and scientists have injected human cells into lab animals for even longer. But the brain poses an additional level of concern because some envision nightmare scenarios in which a human mind might be trapped in an animal head.

"Human diseases, such as Parkinson's disease, might be amenable to stem cell therapy, and it is conceivable, although unlikely, that an animal's cognitive abilities could also be affected by such therapy," a report issued in April by the influential National Academies of Science that sought to draw some ethical research boundaries.

So the report recommended that such work be allowed, but with strict ethical guidelines established.

"Protocols should be reviewed to ensure that they take into account those sorts of possibilities and that they include ethically sensitive plans to manage them if they arise," the report concluded.

At the same time, the report did endorse research that co-mingles human and animal tissue as vital to ensuring that experimental drugs and new tissue replacement therapies are safe for people.

Gage said the work published Monday in the journal Proceedings of the National Academy of Sciences is another step in overcoming one of the biggest technical hurdles confronting stem cell researchers: when exactly to inject the cells into patients.

The results suggest that human embryonic stem cells, once injected into people, will mature into the cells that surround them. No known human has ever received an injection of embryonic stem cells because so little is known about how those cells will mature once inside the body.

For now, Gage said his work is more geared toward understanding disease than to finding a cure.

"It's a way for us to begin to tease out the way these diseases develop," Gage said.

Human embryonic stem cells are created in the first days after conception and give rise to all the organs and tissues in the human body. Scientists hope they can someday use stem cells to replace diseased tissue. But many social conservatives, including President Bush, oppose the work because embryos are destroyed during research.

Stem cell researchers argue that mixing human and animal cells is the only way to advance the field because it's far too risky to experiment on people; so little is known about stem cells.

"The experiments have to be done, which does mean human cells into non-human cells," said Dr. Evan Snyder, a stem cell researcher at the Burnham Institute in San Diego. "You don't work out the issues on your child or your grandmother. You want to work this out in an animal first."

Snyder is injecting human embryonic stem cells into monkeys and is convinced that there's little danger.

"It's true that there is a huge amount of similarity, but the difference are huge," Snyder said. "You will never ever have a little human trapped inside a mouse or monkey's body."

_

On the Net:

Gage lab: http://www.salk.edu/faculty/faculty/details.php?id23

Stanford ethics center: http://scbe.stanford.edu/research/


NAS: http://national-academies.org/



source:http://www.kansascity.com/mld/kansascity/13391863.htm?template=contentModules/printstory.jsp


The Xbox 360 CPU architecture

The Xbox 360 system has a single chip (with 165 million transistors) for its CPU. This chip is in fact a three-way symmetric multiprocessor design. The three PowerPC cores are identical, except that they are physically reflected through the X and Y axis. Each of the CPU cores is a specialized PowerPC chip with a VMX128 extension related to (and partially compatible with) the VMX instructions in the G4 and G5 CPUs. The three CPU cores share a 1MB Level2 cache. Each processor has 32KB each of data and instruction Level1 cache. The chip's front-side bus/physical interface has a 21.6GB/second bandwidth, and runs at 5.4GHz. The high frequency clocks are generated on-chip by four phase-locked loops: two for the core clocks, two for the PHY clock.


Figure 1. The Xbox 360 chip
The Xbox 360 chip

The Xbox 360 CPU chip has testing and debug functions, including tracing, configuration control, and performance monitoring features. Access to these functions is through the block in Figure 1 labeled test/debug. The block labeled Miscellaneous IO provides a JTAG port, a POST monitor, and an interface for a serial EEPROM in case patch logic configuration was needed during bring-up.

To improve manufacturing yield, the SRAM Arrays used in the L1 and L2 caches support both row and column redundancy. This redundancy is enabled at chip test by burning electronic fuses. The eFuses are one of the unique capabilities of the IBM 90nm CMOS SOI technology the chip is fabricated in. Efuses were also used to record a unique supply voltage to be used for each chip. Finally, to help reduce the potential impact of process variations on the operation of the PHY analog circuits, eFuses were used for parametric adjustment in the analog units.

The physical package of the chip matters, too. A crucial design goal in the CPU of a consumer electronics device is high volume with good yield and comparatively low cost. The package is a 2-2-2 FC-PBGA, measuring 31mm by 31mm.

The CPU core examined

The CPU cores (there are three) are the highest frequency PowerPC cores currently available, running at 3.2GHz. Throughout, the CPU uses extensive clock gating, leaving pipelines shut down until there are instructions to be processed; this dramatically reduces power consumption under real-world loads. The basic design is a 64-bit PowerPC architecture, with the complete PowerPC ISA available.


Figure 2. The PowerPC core
The PowerPC core

The instruction unit is multithreaded, with two simultaneous threads. The instruction cache is 32KB. The core implements a two-issue, in-order execution microarchitecture. This means two instructions are issued at a time but execution within the units is in sequential order. Execution is delayed to cover the load use penalty without stalling the pipeline.

The L1 instruction cache (Icache) is a 32K Byte cache with parity error checking. It is two-way set associative cache with 128B lines. First-level translation for instruction addresses is done using a 64-entry, two-way set associative effective to real address translation cache.

The two issued instructions can go to one of five execution pipes: Branch (which is really part of the instruction unit), Load/Store , Fixed Point, Floating Point, and VMX. Difficult instructions are implemented through microcode. At dispatch they are cracked and converted into multiple micro-ops.

The branch unit includes a 4KB two-way set-associative Branch History Table per thread.

The Fixed Point pipe actually has two units: one to handle the simple operations like (add/sub, cmp, logical ops, and rotate); and one to handle the complex operations like multiply/divide.

The Load/Store pipe handles access to the L1 Data cache and the storage hierarchy. Like the L1 Icache, the L1 Dcache is a 32KByte cache with parity error checking. However, it is four-way set associative. It is "store through" and provides non-blocking access so a cache miss does not hold up a subsequent hit.

A 64 entry two-way associative ERAT handles first-level data address translation. Second-level translation for both data and instructions is handled by a 1K entry four-way associative TLB (translation lookaside buffer) which can be software as well as hardware-managed.


Figure 3. The combined VMX and FPU unit
The combined VMX and FPU

Floating point instructions are sent to a combined VMX/FPU unit, which has available two simultaneous threads for the VMX and two for the FPU. Once again, the delayed-execution issue queue reduces load latency to two cycles. The load/store unit (LSU) might operate out-of-order with respect to the FPU, but the final results are correct. Each stage in the FP/VMX is also 11 FO4. As a result the pipelines are quite deep and result in significant delay for instruction completion. Scalar double-precision floating point operations have 10-cycle latency. VMX operations have four or 14-cycle latency, depending on the operation.

Note: 11 FO4 refers to the latch-to-latch delay within the pipeline stage. It is a technology independent way of indicating how much logic can go into each pipe stage. This also indicates how many pipeline stages are needed since the less logic you can put in a stage, the more stages are required for the same function. However, the less logic you put in a stage, the faster the clock frequency. The metric being used is the delay of a single Inverter circuit fanning out to four other circuit elements. FO4 stands for Fan Out of 4.

While the term VMX is familiar to PowerPC users, the implementation on the Xbox 360 processor is a new design called VMX128 which was specially enhanced to accelerate 3D graphics and game physics.

The number of vector registers was increased from 32 to 128. All 128 registers are directly addressable, and the original 32 registers are mapped to the first 32 entries of 128-entry vector register file, and so are compatible with the original PowerPC ISA. We also added a number of new instructions. Instructions were added to calculate the dot-product of two vectors made from three or four floating point values. Data formatting instructions were added to help improve the processing of data that has been packed into memory to reduce the program size. These include: instructions for rotate and insert operations, pack/unpack instructions for handling Direct3D® data types, and loads and stores for misaligned data. The VMX128 ISA is binary-compatible with a subset of VMX. A few vector floating point and vector integer instructions are no longer supported, and attempting to execute them will result in the system illegal instruction handler being invoked.

The Level2 cache provides 1MB of cache shared by the three processing units. It uses a MESI protocol for memory coherency, and is eight-way set associative. The cache itself provides single-bit correct, double-bit detect ECC validation.


Figure 4. The architecture of the L2 cache
The L2 cache

Figure 4 shows the layout of the cache. The three processor cores are at the top of the figure and communicate with the cache through the crossbar, which operates at full processor frequency. The rest of the L2 cache operates at half processor frequency. There are eight store-gathering buffers per core in the cacheable data path, which are non-sequential to improve performance. Non-cacheable requests go through a separate data path, providing four buffers for each core; these buffers are sequential to simplify ordering for non-cacheable operations.

The L2 cache as a whole supports high-bandwidth streaming. Using a new instruction called Extended Data Cache Block Touch, it is possible to prefetch data directly from main memory to the L1 cache. This significantly reduces L2 thrashing on prefetch which can be a significant problem on an L2 cache of this size if care is not taken. Using an aggressive hit under miss capability implemented in the L1 Dcaches, up to eight outstanding load/prefetches are possible per core.

The L1 caches are write-through, and a store to an address not held in the L1 will not allocate a line into the L1. The L2 cache has a configurable set-locking capability, so that streaming through a locked set does not thrash the rest of the cache.

Procedural Geometry is a technique that Xbox 360 game developers can use to reduce memory utilization and bandwidth. Graphical objects have been represented as a collection of triangles. But think of a sphere or other curved surface. They could be represented as an equation. The CPU chip can use code running in one of the cores to "procedurally generate" the equivalent triangles to represent the object. The data representing these triangles will reside in the L2 since the L1 is store-through. The GPU can read modified data directly from the L2 cache without causing a castout or change in cache state. This reduces the use of main-memory bandwidth but also keeps the L2 unchanged.

The front-side bus (FSB)

The FSB architecture of the Xbox 360 is specifically designed to meet the throughput and latency requirements of a gaming platform. The design, test, and validation of the FSB were performed by IBM, and common VHDL was used in both the CPU and in ATI's GPU, even though the chips were built with different methodology, technology, frequency, and even data width! The FSB accepts commands from the GPU or CPU, reorders them, tracks them, and ensures correct delivery to the other chip. The physical layer has 10.8GB/sec bandwidth, a target specified to support procedural geometry. On the CPU side, this interfaces to a 1.35GHz, 8B wide, FSB dataflow; on the GPU side, it connects to a 16B wide FSB dataflow running at 675Mhz.

The transaction layer provides a common functional interface to the two chips. It manages the Link Layer protocol for reliable packet delivery. It also performs command reordering and manages the two virtual channels. The two virtual channels are used for request and response. This is done primarily for deadlock avoidance, but it also allows configurable performance by setting channel priority.

The link layer provides link training, error detection and retransmission, as well as flow control. We architected an enhanced soft error recovery mechanism to support the use of lower cost manufacturing components and the link initialization must be reliable without software intervention.

The physical layer (PHY) itself is structured as two unidirectional links, each link consisting of two single-byte lanes, with one clock each. The links are source-synchronous, so the receive clock is sent with the data. The clocks run at 5.4GHz, and each link delivers 10.8 GB/sec bandwidth.

The PHY is on a separate, fixed 1.1V, voltage source from the rest of the CPU. The FSB is designed for low cost (6 inches of wire on a simple system card), but also for reliability. The most significant part of the PHY design is the analog portion which is implemented in Current Mode Logic which supports the very low jitter and high noise tolerance required. Termination on the link to improve link signaling quality is controlled dynamically at link training. Low tolerance on-chip resistors are dynamically switched in and out to adjust the termination to 50ohms. This provides robustness for a chip that will be used in a small box next to a powerful graphics processor and assorted other hardware, and which will not enjoy the benefits of a well-maintained data center.


Figure 5. First pass hardware performance
First pass hardware performance

Figure 5 shows the transmit eye diagram, and the receive error rate bathtub curve measured in the lab from the first pass hardware. The eye diagram shows a very clean transmit signal with very little jitter and noise. The error rate bathtub curve, super-imposed on the eye diagram, shows a very low error rate in the eye where the link will operate.

The package design for the chip must carefully control all aspects of interfacing the chip electrically to the rest of the world. This includes high-speed signaling and power distribution or supply voltage. For high-speed signaling, the package must work to minimize signal attenuation between the package and the socket, loss due to reflection within the package, and crosstalk between adjacent signal pairs. For power distribution, the package must ensure the voltage available for the internal circuits never decreases more than 80mV as the current load changes due to dynamic changes in software characteristics.

The physical link specification included the receiver and transmitter performance, the chip package, board layout, and wiring constraints. The specification was created by IBM and used by Microsoft to design the system board. In the end, the PHY design, the FSB architecture, the link specification, and the package design all worked together to produce the needed reliability and high-volume manufacturability.

Testing and debug features

The Xbox 360 CPU has an array of testing and debug features. Console games are held to rigid quality standards and harsh deadlines, making good support for debugging a significant benefit. The Xbox 360 CPU allows full-speed operation while tracing execution and running tests; this helps to maximize defect coverage, including marginally slow circuits. The analog PHY is likewise covered by a built-in self test (BIST). Over a thousand internal signals can be traced, running at full speed. Robust local and global triggers and pattern-matching capabilities are available. Additionally, the CPU provides an external debug bus for extended traces; this runs at 1/4 full speed for the CPU, but lets the FSB run at full speed.

The trace function is controlled through the JTAG interface and allows logic signals to be sampled and stored within the on-board trace arrays. Each of the processor cores and the L2 cache have two personal trace arrays and controller. The FSB has one trace array and controller . The rest of the chip units share a single trace array and controller. Each controller can be set up to trace 64 logic signals and to act as a triggered logic analyzer allowing great flexibility in the timing and coverage of events. The on-chip trace buffers allow 1024 samples. If the trace requires more space than the on-chip arrays support, the external debug bus can be set up to capture the date externally. Because the CPU runs so fast, an individual sample is limited in number of logic signals captured. Tracing can be turned on and off at any time. However, the trace buffers are initialized at the start of each trace event so only the most recent trace event data is available

Additionally, the Xbox 360 CPU provides 16 32-bit counters for use in performance monitoring, and can monitor hundreds of events across all the functional units in the processor chip. There are programmable start/stop and synchronization conditions.

These features offer developers targeting the Xbox 360 a variety of options for testing and debugging code, with the CPU helping rather than hindering.



Back to top


Design validation and processes

Acronym alley
Xbox 360 The next-generation, PowerPC-based, Xbox console
System 360 No relation
BHT Branch History Table
BIST Built In Self test
EDA Engineering Design Automation
ERAT Effective to Real Address Translation
FO4 Fan-Out of Four
FSB Front Side Bus
FXU Fixed Point Unit
GPR General Purpose Register
GPU Graphics Processing Unit
ISA Instruction Set Architecture
LSU Load Store Unit
MESI Modified Exclusive Shared Invalid
PERM Permute
PHY Physical interface layer
SPI Serial Peripheral Interface
VMX Vector/SIMD Multimedia eXtension
VRF Vector Register File
XBAR Cross Bar

One of the priorities in developing the Xbox 360 system was getting a reliable chip on the first pass. The first pass hardware ran with bus, CPU, and cache all at full speed, and a demo game was running on it one week from power-on. This accomplishment was the result of an exhaustive testing and verification process throughout the design of the system.

Verification was both parallel and hierarchical. Each component was verified separately, but larger units were also verified as a group. As much as possible, tests were designed to catch defects where they could be corrected quickly. The process was focused on quality, with quality measurement standards and an extensive review process. IBM verification tools were used along with industry tools. Formal verification was used where appropriate. Another critical component of testing was intelligent randomized test generation, to stress-test components in a variety of circumstances. Hardware acceleration was used to make simulations more practical, using hardware/software co-simulation.

Because of this, the kernel code to be run on the system was in testing and verification long before the first pass chip arrived; this allowed testing, not only of the kernel code, but of the chip on which it was being run (in simulation). The end result was a successful Pass 1 hardware, and the move from first silicon to volume production took only eight months.



Back to top


Acknowledgments

This article was adapted by Peter Seebach, working from the original presentation "Application Customized CPU Design for Microsoft Xbox 360," presented at MPR Fall Processor Forum 2005 by Jeffrey Brown of IBM. Peter would like to thank Tim Kelly and Jeff Brown for technical and editorial review during the writing process.

IBM and PowerPC are trademarks of International Business Machines Corporation in the United States, other countries or both.

Microsoft, Direct3D, and Xbox 360 are trademarks of Microsoft Corporation in the United States, other countries, or both.



Back to top


Resources

Learn

Get products and technologies

Discuss


Back to top


About the author


Jeff is the Chief Engineer for the Xbox360 CPU Chip Development. He is an IBM Distinguished Engineer in the Engineering & Technology Services Division of IBM and a member of the IBM Academy of Technology. He has been part of E&TS from its inception and has a 15 year history of CPU, memory, and IO subsystem development for iSeries, pSeries, and xSeries within IBM.





source:http://www-128.ibm.com/developerworks/power/library/pa-fpfxbox/?ca=dgr-lnxw06XBoxStory


This page is powered by Blogger. Isn't yours?