SGI O2

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
SGI O2
File:SGI O2-IMG 7208.jpg
ManufacturerSilicon Graphics, Inc.
Release dateOctober 1996
Operating systemIRIX
CPUR5000, RM7000, R10000, or R12000
Memory32 MB (up to 1 GB)
PredecessorSGI Indy
Websitesgi.com/O2 at the Wayback Machine (archived 1999-02-24)
File:Silicon Graphics O2 Plus.jpg
SGI O2+ Workstation

The O2 is an entry-level Unix workstation introduced in 1996 by Silicon Graphics, Inc. (SGI) to replace their earlier Indy series. Like the Indy, the O2 uses a single MIPS microprocessor and was intended to be used mainly for multimedia. Its larger counterpart is the SGI Octane. The O2 was SGI's last attempt at a low-end workstation.

Hardware

[edit | edit source]

System architecture

[edit | edit source]

Originally known as the "Moosehead" project, the O2 architecture features a proprietary high-bandwidth Unified Memory Architecture (UMA) to connect system components. A PCI bus is bridged onto the UMA with one slot available.[1] It has a designer case and an internal modular construction. Two SCSI drives can be mounted on special caddies (one in the later R10000/R12000 models due to heat constraints) and an optional video capture / sound cassette mounted on the far left side.

The O2 came in two distinct CPU flavours: the low-end MIPS 180 to 350 MHz R5000- or RM7000-based units and the higher-end 150 to 400 MHz R10000- or R12000-based units. The 200 MHz R5000 CPUs with 1 MB L2-cache are generally noticeably faster than the 180 MHz R5000s with 512 KB cache. There is a hobbyist project that has successfully retrofitted a 600 MHz RM7xxx MIPS processor into the O2.

Memory

[edit | edit source]

There are eight DIMM slots on the motherboard and memory, and all O2s are expandable to 1 GB using proprietary 239-pin SDRAM DIMMs. The Memory & Rendering Engine (MRE) ASIC contains the memory controller. Memory is accessed via a 133 MHz 144-bit bus, of which 128 bits are for data and the remaining for ECC. This bus is interfaced by a set of buffers to the 66 MHz 256-bit memory system.

I/O functionality is provided by the IO Engine ASIC. The ASIC provides a 64-bit PCI bus, an ISA bus, two PS/2 ports for keyboard and mouse, and a 10/100 Base-T Ethernet port. The PCI bus has one 64-bit slot, but the ISA bus is present solely for attaching a Super I/O chip to provide serial and parallel ports.

Disks

[edit | edit source]
File:SGI O2-IMG 7215.jpg
Rear view of an SGI O2

The O2 carries an UltraWide SCSI drive subsystem (Adaptec 7880). Older O2's generally have 4x speed Toshiba CD-ROMs, but any Toshiba SCSI CD-ROM can be used (as well as from other manufacturers, the bezel replacement however is designed to fit Toshiba design and also IRIX cannot utilize CD-DA mode other than Toshiba). Later units have Toshiba DVD-ROMs. The R5000/RM7000 units have two available drive sleds for SCA UltraWide SCSI hard-disks. Because the R10000/R12000 CPU module has a much higher cooling-fan assembly, the R10000/R12000 units have room for only one drive-sled.

Graphics

[edit | edit source]
File:Silicon Graphics O2 - Cracking open (cropped).jpg
SGI O2 - internals

The O2 used the CRM chipset specifically developed by SGI for the O2. It was developed to be a low-cost implementation of the OpenGL 1.1 architecture with ARB image extensions in both software and hardware. The chipset consists of the microprocessor, and the ICE, MRE and Display ASICs. All display list and vertex processing, as well as the control of the MRE ASIC is performed by the microprocessor. The ICE ASIC performs the packaging and unpacking of pixels as well as operations on pixel data. The MRE ASIC performs rasterization and texture mapping. Due to the unified memory architecture, the texture and framebuffer memory comes from main memory, resulting in a system that has a variable amount of each memory. The Display Engine generates analog video signals from framebuffer data fetched from the memory for display.

Operating systems

[edit | edit source]

Several operating systems support the O2:

Performance

[edit | edit source]

The SGI O2 has an Imaging and Compression Engine (ICE) application-specific integrated circuit (ASIC) for processing streaming media and still images.[4] ICE operates at 66 MHz and contains a R3000-derived microprocessor serving as the scalar unit to which a 128-bit SIMD unit is attached using the MIPS coprocessor interface.[4] ICE operates on eight 16-bit or sixteen 8-bit integers,[4] but still provides a significant amount of computational power which enables the O2 to do video decoding and audio tasks that would require a much faster CPU if done without SIMD instructions. ICE only works with the IRIX operating system, as this is the only system that has drivers capable of taking advantage of this device.

The Unified Memory Architecture means that the O2 uses main memory for graphics textures, making texturing polygons and other graphics elements trivial. Instead of transferring textures over a bus to the graphics subsystem, the O2 passes a pointer to the texture in main memory which is then accessed by the graphics hardware. This makes using large textures easy, and even makes using streaming video as a texture possible.

Since the CPU performs many of geometry calculations, using a faster CPU will increase the speed of a geometry-limited application. The O2's graphics is known to have slower rasterization speed than the Indigo2's Maximum IMPACT graphics boards, though the Maximum IMPACT graphics is limited to 4 MB of texture memory, which can result in thrashing, whereas the O2 is limited only by available memory.

While CPU frequencies of 180 to 400 MHz seem low today, when the O2 was released in 1996, these speeds were on par with or above the current offerings for the x86 family of computers (cf. Intel's Pentium and AMD's K5).

O2s were often used in the following fields:

  • Imaging (especially medical)
  • On-air TV graphics; the most widespread example of an O2 running TV graphics is the Weather Star XL computer for The Weather Channel
  • Desktop workstation
  • 3D modelling
  • Analogue video post-production
  • Defense industries

<timeline> DateFormat=mm/dd/yyyy Period = from:01/01/1983 till:01/01/2011 Define $now = 09/01/2007 Define $skip = at:end # Force a blank line Define $dayunknown = 15 # what day to use if it's actually not known Define $monthunknown = 06 # what month to use if it's not actually known ImageSize= width:850 height:auto barincrement:25 TimeAxis = orientation:horizontal PlotArea = right:5 left:5 bottom:60 top:5 Legend = orientation:vertical position:bottom columns:4

Colors =

    id:bg         value:white
    id:m68k1      value:rgb(0.4,0.9,0.8) legend:M680x0
    id:m68k2      value:rgb(0.4,1,0.9) 
    id:mips1      value:rgb(0.75,0.4,1) legend:MIPS
    id:mips2      value:rgb(0.85,0.4,0.90)
    id:x861       value:rgb(0.60,0.60,1) legend:Itanium
    id:x862       value:rgb(0.55,0.55,0.8) legend:X86
    id:lightline  value:rgb(0.9,0.9,0.9)
    id:lighttext  value:rgb(0.5,0.5,0.5)

BackgroundColors = canvas:bg ScaleMajor = gridcolor:lighttext unit:year increment:2 start:01/01/1984

BarData =

 barset:terminal
 barset:workstationlow
 barset:workstationmid
 barset:workstationhigh
 barset:server
 barset:workstationonyx
 barset:workstationaltixbased

PlotData=

 width:15 textcolor:black
 barset:terminal
   shift:(5,-5) anchor:from fontsize:s
   color:m68k1 from:11/$dayunknown/1983 till:$monthunknown/$dayunknown/1986 text:"1000/1200"
 barset:break
   color:m68k2 from:$monthunknown/$dayunknown/1986 till:$monthunknown/$dayunknown/1988 text:"2000/2200"
 barset:break
   color:x862 from:08/$dayunknown/1999 till:01/$dayunknown/2002 text:"Visual Workstation"


 barset:workstationlow
   shift:(5,-5) anchor:from fontsize:s
   color:m68k1 from:$monthunknown/$dayunknown/1984 till:$monthunknown/$dayunknown/1986 text:"1400"
 barset:break
   color:m68k2 from:$monthunknown/$dayunknown/1986 till:$monthunknown/$dayunknown/1987 text:"2300"
 barset:break
   color:m68k1 from:$monthunknown/$dayunknown/1987 till:$monthunknown/$dayunknown/1988 text:"3000"
 barset:break
   color:mips1 from:10/$dayunknown/1988 till:$monthunknown/$dayunknown/1992 text:"Personal Iris"
 barset:break
   color:mips2 from:$monthunknown/$dayunknown/1993 till:$monthunknown/$dayunknown/1996 text:"Indy"
 barset:break
   color:mips1 from:$monthunknown/$dayunknown/1996 till:08/$dayunknown/2001 text:"O2"
 barset:break
   color:mips2 from:08/$dayunknown/2001 till:01/$dayunknown/2002 text:"O2+"


 barset:workstationmid
   shift:(5,-5) anchor:from fontsize:s
   color:mips2 from:$monthunknown/$dayunknown/1986 till:$monthunknown/$dayunknown/1989 text:"Professional Iris"
 barset:break
   color:mips1 from:$monthunknown/$dayunknown/1990 till:$monthunknown/$dayunknown/1994 text:"Indigo"
 barset:break
   color:mips1 from:01/$dayunknown/2002 till:12/26/2006 text:"Fuel"
 barset:workstationhigh
   shift:(5,-5) anchor:from fontsize:s
   color:mips1 from:10/$dayunknown/1988 till:12/$dayunknown/1991 text:"PowerSeries"
 barset:break
   color:mips1 from:$monthunknown/$dayunknown/1992 till:$monthunknown/$dayunknown/1997 text:"Indigo²"
 barset:break
   color:mips2 from:$monthunknown/$dayunknown/1997 till:$monthunknown/$dayunknown/2000 text:"Octane"
 barset:break
   color:mips1 from:$monthunknown/$dayunknown/2000 till:06/25/2004 text:"Octane2"
 barset:break
   color:mips2 from:06/$dayunknown/2003 till:12/25/2006 text:"Tezro"
 barset:server
   shift:(5,-5) anchor:from fontsize:s
   color:mips1 from:$monthunknown/$dayunknown/1992 till:$monthunknown/$dayunknown/1997 text:"Challenge M"
 barset:break
   color:mips2 from:$monthunknown/$dayunknown/1996 till:01/$dayunknown/2002 text:"Origin 200"
 barset:break
   color:mips1 from:10/09/2001 till:12/31/2003 text:"Origin 300"
 barset:break
   color:x861 from:$monthunknown/$dayunknown/2005 till:12/$dayunknown/2006 text:"Altix 350"
 barset:break
   color:x862 from:12/$dayunknown/2006 till:end text:"Altix 450, Altix XE"
 barset:workstationonyx
   shift:(5,-5) anchor:from fontsize:s
  color:mips2 from:01/$dayunknown/1992 till:12/$dayunknown/1997 text:"Crimson"
 barset:break
  color:mips1 from:10/09/1993 till:12/31/1998 text:"Onyx"
 barset:break
  color:mips2 from:10/09/1996 till:12/31/2000 text:"Onyx 2"
 barset:break
  color:mips1 from:10/09/2000 till:02/25/2005 text:"Onyx 300"
 barset:workstationaltixbased
   shift:(5,-5) anchor:from fontsize:s
   color:mips1 from:$monthunknown/$dayunknown/1992 till:$monthunknown/$dayunknown/1997 text:"Challenge"
 barset:break
  color:mips2 from:10/09/1996 till:12/31/2000 text:"Origin 2000"
 barset:break
  color:mips1 from:10/09/2000 till:02/25/2005 text:"Onyx/Origin 3000"
 barset:break
   color:x861 from:04/26/2005 till:$monthunknown/$dayunknown/2010 text:"SGI Prism"
 barset:break
   color:x862 from:04/02/2008 till:end text:"SGI Virtu"

</timeline>

References

[edit | edit source]
  1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value). (includes photos)
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ NetBSD ported to SGI O2
  4. ^ a b c Kilgard, Mark J. (1997). "Realizing OpenGL: Two implementations of one architecture". 1997 SIGGRAPH/Eurographics Workshop, pp. 45–55.
[edit | edit source]