Talk:Shared graphics memory
This article is rated Stub-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||
|
Is the title for this article incorrect? it seems the Shared Memory article should be renamed Shared Memory Architecture. This looks to be a good example of an implementation of the shared memory architecture. Any objections to renaming this? 67.64.77.89 (talk) 22:26, 2 April 2008 (UTC)
- Three years later, yes. This is a somewhat confused article based on a "PC mentality". One day I will clean these up, but not today. History2007 (talk) 13:46, 23 December 2011 (UTC)
Amiga paragraph
[edit]Ive had a quick tidy of this paragraph, but it has got me thinking that it might not belong in this article:
- Another early design was the Commodore Amiga, which featured 256-2048 kB of "chip RAM" (depending on the model). This RAM was used by both the CPU (as main memory) and the Amiga's custom chipset (for sound/graphics/IO). By default, most Amiga computers only came with chip RAM, but could be expanded with RAM that only the CPU could access (called "Fast RAM"), through expansion boards.
I dont think this is quite the same thing as what the rest of the article is referring to (purely sharing graphics and main memory) as the system architecture is significantly different from IBM PC-based designs?StealthFox 00:37, 2 February 2009 (UTC)
- Your version offers more detail, yet it diverts from the topic imho. Actually UMA-like designs were used in most home computers in the 80s and 90s (Atari 400/800/XL series, VIC-20, C64, Atari ST, ...) BUT usually they just shared the RAM in total. Modern UMA design use a window of the entire RAM for graphics, in which the graphics subsystem shares part of the total memory area. The Amiga differed in being the other way around: the CPU co-used the graphics memory, just like older home computers but it wasn't limited to that as it offered a way to expand with CPU-dedicated RAM. In software it looks just like modern UMA, but on the hardware side it is different (two or more memory subsystems). Since this article is not about modern UMA but about shared memory in general, the Amiga architecture does belong here - as would a reference to previous home computer systems. -- Zac67 (talk) 21:57, 3 February 2009 (UTC)
- This is also what I came to the discussion page to discuss, but I'm not sure that point is entirely accurate. Most machines contemporary of the PC, PCjr, Amiga etc that didn't have a dedicate graphics card would have had shared or arguably unified memory designs - I suppose the point is whether that memory is considered fully as part of the system memory (so a system util would report, say, 1024kb total in a 1mb system) regardless of it actually being in use for video (and programs/OS having specifically to avoid that area), rather than it being reserved and unavailable (so, showing 960kb for a similar machine with 64kb used for video). Most of them could probably be described as "windowing", as there were not a great deal of different video modes available in the one machine, and most of them would use a fixed, or not highly variable amount of RAM, so could be usually relied on to use the same amount in the same place (possibly the biggest size change, other than e.g. Amigas and Atari Falcon/TT/Mega STe range, would be whether you had a second similar-sized space reserved for page-flipping/back buffering). Sprite-based ones like the C64 make things a bit more difficult of course. But e.g. the ST would normally have approx 32kb (32000 bytes for screen area - colour bit depth decreased as resolution went up - plus border colour, mode/refresh rate byte and 4 to 32 bytes of pallete data), Sinclair Spectrum about 7kb (256x192 mono + attributes + border + USRs), etc.
- If the actual Amiga architecture means that you actually couldn't touch the screen memory in any meaningful way without actually going via the video hardware, and you could see the total RAM reported by the OS going up and down depending on screen mode (e.g. 320x200x2-bit vs 704x512x4-bit, a potential 160kb difference, very significant on a 0.25 to 1.0 mb machine), then fair enough. It was quite a pioneering and anachronistic machine, and I'm not enough of an expert on it to know. But if it's enough like the other machines of the time, then it was probably an area that you specifically had to avoid - the base 256kb was merely as big as it could get (good for, say, 640x512 in 6bit halfbrite mode, if you could hack things around enough to make it work), rather than being "hard" reserved, as is the case on modern PCs with UMA graphics (a particularly annoying situation on, e.g. a 256mb XP laptop that has a minimum of 32mb (and 64mb by default) of its RAM *exclusively* used and accessed by the graphics hardware, even if it's only being used in 16-bit XGA mode (which requires only 1.5mb) and that missing memory would be very useful for improving system performance)... which means either you have to drop the example, or include at least a passing mention to others that worked the same way to show it's not a unique example and to remove any suggestion of bias. 193.63.174.10 (talk) 14:59, 16 November 2010 (UTC)
- The Amiga hardware and esp the OS took a dynamic approach: the framebuffer memory is dynamically located and sized on demand. The RAM is allocated from system memory, it's just a special kind that's tagged as Chip RAM. You'd allocate Chip RAM if you want to use it for bitmap, sprite, sound or floppy data. Freeing the memory puts it back into the system pool and it's all counted against total system memory since it can all be used by the CPU as well - even if it might prefer faster RAM. From the software POV you have a 'window' of 512/1024/2048 KiB where you can put stuff (i.e. where the chipset can reach it). IMO it doesn't make any difference whether it's statically reserved or not, that's just a software decision. I have no idea why modern IGP use static allocations apart from Intel having patented this despite of obvious prior art. -- Zac67 (talk) 21:22, 16 November 2010 (UTC)
Differences between Unified Memory and Shared Memory
[edit]Need to distinguish between physically shared memory and logically shared memory address space.
Most peripherals share a memory buffer to transfer data to the main program or operating system. The CPU has direct access to the memory and the CPU accesses the memory over an intervening bus. Unified Memory Architecture is where all devices get equivalent access to memory example newer dual core and quad core processors. Shared memory systems have a hierarchy of which device get access priority.
Missing is cross-reference to NUMA (non uniform memory architecture) initially used by Sequent servers bought out by Tandem bought out by Compaq bought out by Hewlett-Packard. This allowed each processor of a multiprocessor system to dynamically use differing amounts of memory depending on its task.
The original Macintosh all-in-one (black and white) (Classic) had a memory mapped framebuffer. Funny that Apple.com doesn't have manuals for early Macs but does have Apple IIgs manuals. That Video was also memory mapped. The Radio Shack Color Computer used a MC8883 memory controller chip that accessed video memory and refresh on phase 1 and allowed cpu access during phase 2 so there was equal access to memory, the Commodore VIC controller worked the same way in Commodore VIC-20 and Commodore 64. Rockwell 65C29 processor had 2 6502s one accessing memory on phase 1 the other accessing memory on phase 2.
The TI 99/4 computers used a TMS 9918 chip which moved data one byte at a time from the CPU to video memory exclusive to the 9918. Example of non-shared.
IBM PC computers were originally based on a text based screen, the MDA or Monochrome Display Adapter built around the MC6845 chip and a 2 K Byte static RAM. This chip was accessed at I/O address 0x3B0-3BB to send one character at a time through the 6845 or by writing to memory space at 0xB8000 to 0xBFFFF. As MDA gave way to EGA, writing one byte at a time through 6845 control registers gave way to directly writing to memory on the video card that was shared out on the ISA bus. As VGA memory was larger than the original Legacy Memory addresses: 0xA0000 - 0xAFFFF VGA, EGA and 0xB0000 - 0xBFFFF Mono, CGA, VGA, EGA; The 386 and 486 ISA based computers shared video memory between 15 and 16 Megabytes ("memory hole"(in computer BIOS Settings) at the top of ISA address range). In part because Video memory is much larger than 1 MB, newer systems use a 64MB or larger Aperture in upper PCI memory space.
Although the SIS6205 was also implemented on PCI bus on some computers like the HP Vectra it shared the Pentium (CPU) bus and memory bus before the Northbridge chipset. Cyrix MediaGX chip implemented the Graphics processor on the same chip as the (Pentium) CPU, sharing the same memory and cache bus. AMD Athlon or newer and newest Intel multicore CPUs have a memory controller on the CPU and Video access is physically buffered through the PCI Express bus controller attached to the intermediate (hypertransport) bus (some Intel CPUs include this controller on board).
http://www.manualshark.org/manualshark/files/28/pdf_29582.pdf HP Vectra manual http://www.onlinecomputerbooks.com/blog/free-book-upgrading-and-repairing-pcs-16th-edition/ http://legend.me.uiuc.edu/~vladimer/sbc/arcom/SBCMediaGX.pdf http://flammingfiles.tripod.com/files/biosdl.pdf Shjacks45 (talk) 23:45, 11 April 2010 (UTC)
A somewhat confused article that needs a rewrite
[edit]I tagged this article for a rewrite because it is by and large confused and has a "PC mentality" based on graphics. It should not be merged with shared memory but does need a rewrite. E.g. it ignores all discussions of multiprocessing, contention, coherence etc. I suggest just deleting all the text there is and including 2 or 3 "correct" paragraphs for now. In any case, I moved this to "shared graphics memory" and will rewrite "shared memory architecture" later. History2007 (talk) 14:13, 23 December 2011 (UTC)