17

I found a mention on page 777 of the Second Edition of the book "Computer Systems: a programmer's perspective" [Bryant - O'Hallaron] stating that Cray supercomputers still do not use virtual memory (please note that the book is from 2011).

I searched an found this quote attributed to Saymour Cray (see Wikiquote -and also Hakersays-) on virtual memory:

Memory is like an orgasm. It's a lot better if you don't have to fake it.

So my question is actually two questions:

  1. Did Cray supercomputers start using VM at some point?
  2. If answer to 1 is "yes", which one was the last one that did not use VM?
  • 1
    If you are asking for proof that Cray machines used VM after your 2011 quote, you're probably in the wrong place. – tofro Sep 26 '18 at 11:01
  • @tofro: Not at all, I just want to know if older ones used, but I know Crays are still in production, so I understand if this crosses the line of "retro". – nbloqs Sep 26 '18 at 11:02
  • 7
    Of course application software for the early Crays often used its own VM techniques to deal with large data structures- but the techniques were often tailor-made to the specific problem, and could therefore use asynchronous read-ahead or write-behind in a much more optimal way than general purpose VM. For some classes of problem, a dumb, general purpose, "least-recently-used" paging algorithm was the worst possible VM implementation as measured by run time! But modern programmers don't care much about such things while browsing the web on hardware 100 times as powerful as a Cray 1! – alephzero Sep 26 '18 at 12:07
  • 2
    @tofro THey already crossed that line 25 years ago :)) – Raffzahn Sep 26 '18 at 12:31
20

It is important to keep in mind that the Cray company name not only went through several hands, but it also built many vastly different machines.

'Classic' Cray machines in lineage since Cyber/CDC did not use nor support virtual memory. This goes all the way until 2003's Cray X1.

In 1993 the T3D of Cray Research Inc (Without Seymour Cray involved *1) marked the first Cray with standard, off-the-shelf microprocessors (Alpha 21064) and virtual memory capability.

During the SGI years (1996-2000) the company was focused to move customers to SGI's MIPS based systems based on the Cray T3 HIPPI communication system.

Project Redstorm in the early 2000s marked Cray's (Now Cray Inc) final move to standard CPUs by using a massive number of AMD x86 Opteron CPUs. Naturally the ability for virtual memory came with that choice. The XD1/XT3 generally available version and all follow up machines were developments based on this design and using x86 CPUs.


On a historic note it might be interesting to know that Cray was not the only one to think that virtual memory is a bogus idea and only wasting resources. IBM engineers designing /360 machines were also refusing to add virtual memory as a standard feature. After all, who on earth would want to buy a large, upper end computer just to considerably lower its memory throughput for a feature that only adds a huge pile of software layers, making it even slower. It took massive pressure from marketing (and customers) to make it a default feature for /370 CPUs.


*1 - Cray himself was involved until the Cray-2 and Cray-3 machines with Cray Computer Corporation as a subcontractor. The company closed in the early 90s, when the Cray-3 didn't meet the demand expected. Next he set up a new company, SRC Computers, to go into the field of massively parallel computers, focusing on communication - which never got any product due his early death. The company still exists, focusing on research.

  • 3
    I didn't say virtual memory is required for time sharing, but rather that it improves the effectiveness. In the absence of virtual memory, every task will need to reserve addresses within a shared space for the duration of its execution. This will limit the peak total-address-space requirement that can be accommodated. Adding virtual memory makes it possible for every task to have its own independent address space, and make it possible for tasks collectively to use more memory than could be handled by any one task, individually. – supercat Sep 26 '18 at 19:43
  • 1
    @supercat No idea what you want to tell with this cloud of words. It's a simple fact, that a machine using virtual memory is slower than one without. – Raffzahn Sep 26 '18 at 20:05
  • 3
    Virtual memory does have a significant performance cost. I don't think I've ever claimed otherwise. They only reason anyone ever uses it is that its benefits are sometimes worth that cost. Those benefits are greatest in time-sharing systems. – supercat Sep 26 '18 at 20:19
  • 2
    Also puzzling why @supercat feels the need to argue the virtues of virtual memory in a stack exchange comment thread that presents factual history. No one is going to design a computer based on this answer. – pipe Sep 26 '18 at 20:25
  • 2
    @pipe: My intended point was that Crays were used in ways that made hardware VM support less useful for them than it would have been for other machines. – supercat Sep 26 '18 at 20:47
9

The book Super Computers, by V. Rajaraman (of 1999) says

Cray computers, however, never provided a virtual memory system, as Cray designers were convinced that the virtual memory's disadvantages outweight its advantages. They try to provide as large a main memory as possible within the technological constraints prevailing at a given time.

I am with that - the main application of early Cray machines (later on, they built rather "normal" computers) was to work on one single complex number-crunching problem at a time. Such a task neither needs multi-user nor can it benefit from any of those users not using their memory right now because of their breakfast break. Using CPU cycles as expensive as those a Cray provided to simply swap around memory pages can be considered a serious waste of money.

  • Not even the current supercomputers, using Xeon Scalable and NVIDIA hardware (cray.com/products)? – nbloqs Sep 26 '18 at 11:01
  • The answer sheds light on what I'm looking for, specially about the reasoning behind the design decision. Thanks a lot! – nbloqs Sep 26 '18 at 11:05
  • 2
    The modern Crays use Linux as OS - It's unlikely they removed VM support from there, but also off-topic, I think. – tofro Sep 26 '18 at 14:11
8

The claim that Cray supercomputers still did not support virtual memory in 2011 is not true. For example, the Cray X1 System Overview, dated 2002, states that the system supports virtual memory (page 29 and elsewhere).

Cray vector supercomputers, including the machines designed by Seymour Cray himself, did not support virtual memory. For example, Dennis Ritchie, in a 1988 paper, wrote about virtualizing an OS on the Cray X-MP, “Another complicated aspect of a virtual machine system, paging and virtual memory, is avoided simply because the hardware doesn’t support it even for native systems.”

Fred Gannett’s “Cray Research and Cray Computers FAQ” claims that the T90 was the first Cray supercomputer to partially support virtual memory.

A prominent feature of Cray machines in the ’90s that might be considered a form of virtual memory was the SHMEM library, first introduced on the (DEC Alpha-based) T3D in 1993. This used a virtual address space to make all CPUs share a portion of their memory space (containing global and static variables, but not stacks or dynamic memory) and communicate through shared memory.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.