설계를 단순화하는 추상화(Abstrcation)
컴퓨터 설계자와 프로그래머는 자원의 수가 급격히 증가함에 따라 설계 시간이 길어지는 것을 방지하기 위해서 생산성을 높이기 위한 기술을 개발해야 했다.
하드웨어와 소프트웨어의 생산성을 높이기 위한 기술 중 하나는 여러 수준에서 설계를 명시하는 추상화(abstraction)를 사용하는 것이다. 하위 수준의 상세한 사항을 안 보이게 함으로써 상위 수준 모델을 단순화한다.
자주 생기는 일을 빠르게
자주 생기는 일을 빠르게 만드는 것이 드물게 생기는 일을 최적화하는 것보다 성능 개선에 도움이 된다. 아이러니하게도 자주 생기는 일은 드물게 생기는 일보다 단순하여 성능을 개선하기 쉬운 경우가 많다. 이 말은 자주 생기는 일이 무엇인지 미리 알고 있다는 것을 가정하고 있지만, 실제로는 세심한 실험과 측정을 거쳐야만 알 수 있는 법이다.
병렬성을 통한 성능 개선
컴퓨팅의 여명기부터 컴퓨터 설계자들은 작업을 병렬적으로 수행하여 성능을 높이는 설계를 해 왔다.
파이프라이닝을 통한 성능 개선
파이프라이닝(pipelining)은 컴퓨터 구조에서 많이 볼 수 있는 병렬서의 특별한 형태이다.
예를 들어 소방차가 없는 시대의 카우보이 영화를 보면 악당이 불을 질렀을 때 사람들이 길게 늘어서서 양동이로 물을 나르는 것과 같다. 사람들이 인간 사슬을 구성하면 각자 양동이를 들고 왔다 갔다 하는 것보다 훨씬 빨리 물을 나를 수 있다.
예측을 통한 성능 개선
허락을 구하는 것보다 용서를 구하는 것이 낫다는 말이 있다. 결정이 될 때까지 아무것도 안 하고 기다리는 것보다는 무엇이라도 하고 잘못되면 그때 뒷수습을 하는 것이 더 낫다는 뜻이다. 무언가를 하려면 앞날을 예측해야 한다. 이것이 다섯 번째 위대한 아이디어이다.
예측이 틀렸을 때 이를 복구하는 비용이 비싸지 않고 예측이 맞을 확률이 비교적 높은 경우, 확실해질 때까지 기다리는 것보다 추측해서 일단 시작하는 것이 평균적으로 빠를 수 있다.
메모리 계층구조
메모리의 속도가 성능을 좌우하고, 메모리의 크기가 풀 수 있는 문제의 크기를 제한하며, 메모리 가격이 오늘날 컴퓨터 가격에서 차지하는 비중이 높기 때문이다. 컴퓨터 설계자들은 이렇게 상충되는 요구를 메모리 계층구조로 해결하고 있다. 최상위 계층에는 가장 빠르고, 가장 작고, 비트 당 가격이 제일 비싼 메모리를 사용하고, 최하위 계층에는 느리지만 크고 비트당 가격이 제일 싼 메모리를 사용한다.
캐시를 사용하면 프로그래머에게 최상위 계층만큼 빠르고 최하위 계층만큼 크면서 싼 메인 메모리가 있는 것처럼 보이게 할 수 있다.
여유분을 이용한 신용도 개선
컴퓨터는 빠르기만 해서는 안되고, 신뢰할 수 있어야 한다. 모든 물리 소자는 장애가 발생할 수 있으므로, 장애를 감지하고 장애가 난 소자를 대치할 수 있도록 여유분을 준비하면 컴퓨터의 신용도(dependability)를 개선할 수 있다.
Moore의 법칙을 고려한 설계
Moore의 법칙이란 Intel 창업자 중 한 명인 Gordon Moore가 1965년에 발표한 놀라운 예측으로, 1년마다 칩에 집적되는 소자의 수가 2배가 된다는 것이다. 10년이 지난 후 그의 예측은 2년마다 2배로 수정되었다.
Moore의 법칙의 예상은 정확했기 때문에 50년 동안 컴퓨터 구조 발전의 근간을 이루어 왔다. 컴퓨터를 설계하는 데에는 여러 해가 소요되기 때문에 프로젝트를 시작해서 끝나는 기간 동안 칩에 집적되는 소자는 2배 내지 3배 증가할 것이다. 컴퓨터 설계자는 프로젝트 시작 시점의 기술이 아니라 종료 시점의 기술에 초점을 맞추어야 한다.
안타깝게도 지수함수적인 성장이 영원히 계속될 수는 없어서 Moore의 법칙이 이제는 잘 맞지 않는다.