자, 다시 처음으로 돌아와 우리가 다룰 내용을 조금 더 자세히 들여다 봅시다. 써놓고 보니 글 사이의 순서가 살짝 꼬인 것 같지만, 우선 컴퓨터구조에 대해 논하려면 '기계어 프로그램의 동작'에 대해 먼저 살펴볼 필요가 있습니다. 컴퓨터가 하는 일은 주어진 데이터를 주어진 프로그램에 맞게 처리하는 것이니까요. 그리고 이를 윗 단계의 추상화인, 사람이 이해할 수 있는 '코드'와 연관지어보기 위해서는 데이터의 표현 방식과 각 명령어의 동작에 대해 이해해야 합니다.
이렇게 컴퓨터의 동작 및 이를 정의하는 '아키텍처'에 대해 이해하고 나면 이제 주어진 동작을 어떻게 더 빠르게 할 수 있을지에 대해 생각해 볼 수 있습니다. 여러 가지 방법이 있겠지요.
'컴퓨터 구조 및 설계' 책의 저자인 David Patterson과 John Hennessy는 컴퓨터구조 분야의 위대한 발상들로 다음과 같이 몇 가지를 꼽았습니다:
- Use abstraction to simplify design
- Make the common case fast
- Performance via parallelism
- Performance via pipelining
- Performance via prediction
- Hierarchy of memories
- ... (사실 나머지는 대다수의 컴퓨터공학도에게 크게 중요하지는 않은 것 같습니다.)
3.(병렬성을 통한 성능 향상)을 제외하면 많은 분들께 생소하게 느껴질 수도 있겠지만, 1~6 각각은 컴퓨터의 성능을 향상시키고, 이를 이용하는 데 매우 중요한 기여를 하였습니다.
'컴퓨터공학 > 컴퓨터구조' 카테고리의 다른 글
A 1.02: 컴퓨터의 역사 [2] (0) | 2023.07.04 |
---|---|
A 1.01: 컴퓨터의 역사 [1] (0) | 2023.07.03 |
A 1.00: 컴퓨터 시스템의 추상화 (0) | 2023.06.07 |
A 0.00: 들어가며 (0) | 2023.06.04 |