In designing a virtual shared memory architecture, an important consideration is whether the main memory should be conventional or (set-) associative. This is the main distinction between so-called CC-NUMA and COMA architectures. In this article we investigate the consequences on price and performance of different choices of component in the memory hierarchy, assuming a main memory which is either conventional or set-associative. We use analytic models driven by accurate miss ratios determined from actual parallel executions of a range of realistic benchmarks. We make cost assumptions based on published figures for different types of storage components. Our results show that, for many programs, CC-NUMA machines need a large coherent cache, often equalling the size of the main memory, in order to achieve good price-performance. As a consequence, optimal CC-NUMA and COMA configurations tend to need set-associative memories of similar size, and show rather little difference in price-performance. Optimal COMA configurations tend to be more general purpose, as one can find a configuration that is nearly optimal in price-performance for all applications that we used, while optimal CC-NUMA configurations tend to be more application specific.