컴퓨터구조

컴퓨터 구조를 시작하면서 - A New Golden Age for Computer Architecture

fish9903 2022. 10. 19. 21:47

 

 John L. Hennessy and David A. Patterson,

“A New Golden Age for Computer Architecture”,

Communications of the ACM, Feb. 2019 

 

Computer architecture의 발전 과정과 현재 상태를 computer architecture가 겪었었던 어려움과 도전들의 관점으로 설명하고있다.

 

긁을 읽어보면, 과거의  computer architecture의 발전 과정과 현재 computer architecture의 상황을 이해할 수 있고, 앞으로 computer architecture를 보는 시각에 많은 도움을 줄 것이다.

 

아래는 글을 읽고 정리해본 내용이다.


 Computer architecture는 과거부터 다양한 도전과 한계에 부딪혀왔고, 이와 맞서면서 변경되고 성장해 왔다. 이 논문에서는 computer architecture가 과거에 어떤 어려움에 부딪혔고 어떻게 나아갔는지, 현재는 어떤 상태에 있는지를 설명하고 있다. 또한 다양한 도전과 어려움을 단순히 바라보는 것이 아닌, 전쟁무기들이 그 전에 사용하던 무기에 맞서기 위해 발전했듯이 도전과 어려움을 기술의 발전을 위한 기회로 보고 있다. 그리고 어떤 도전과 어려움이 지금의 computer architecture 황금기를 만들었는지 설명한다. 

 

 과거와 현재 computer architecture가 해결하고자 하는 가장 큰 문제는 성능이다. 과거의 RISC의 등장, 병렬처리 기법의 탄생과 변화 모두 성능을 높이기 위함 이였다. RISC는 복잡한 CISC의 ISA를 간단히 하기위해 고안되었고 모든 상황에서는 아니지만 CISC보다 더 좋은 성능을 보여주었다. 병렬처리는 많은 변화가 있었는데 시작은 pipelining 기법이다.

 

 병렬처리의 개념이 나오기 전에는 무어의 법칙을 따르듯 한 칩에 트랜지스터를 넣는 개수를 증가시키는 것이 쉬웠고 이는 성능 향상으로 연결되었다. 하지만 점점 한 칩에 트랜지스터를 넣는 개수를 늘리는 것에 한계를 느끼자, 성능을 높이는 다른 방법이 필요했다. 그래서 나온 것이 병렬처리 개념이다. 1986년과 2002년 사이에는 pipeline을 사용하는 명령어 수준 병렬처리(ILP)가 성능을 높이는데 주로 사용되었다. Pipeline은 이 용어가 의도한만큼의 효과를 보기위해선 최대한 많은 pipeline을 사용할 수 있어야했지만, 프로그램에서 병렬 처리(동시에 처리)가 가능한 동작의 비율이 낮으면 기대만큼 효과를 보지 못한다. 이것이 암달의 법칙이고 여기서 다시 한계에 부딪힌다.

 

암달의 법칙(전체 동작 중의 P비율이 S배 만큼 성능이 증가 했을 때, 전체 성능 증가를 계산)

 

 이것을 극복하고자 다음에 실행될 명령어를 예측하여 미리 가져오는 branch prediction(speculation)을 사용하여 pipeline의 효율을 높였다. 하지만 이것 또한 문제가 있는데 predict를 실패하면 자원이 낭비된다는 것이다. 예측을 항상 옳게 할 수는 없었고, 성능을 높이기 위해 새로운 구조를 고안하여 나온 것이 multicore다. 항상 그랬듯 multicore도 문제가 있다. 에너지 효율 문제이다. Multicore를 사용한다고 해도 암달의 법칙을 벗어나지 못한다. 프로그램에 존재하는 동시에 처리가능한 동작의 부분에 따라 성능이 달라지고 에너지 소모도 달라진다. 동시 처리가 불가능한 동작을 할 때는 사용되지 않는 core가 존재하고 이는 전력 낭비에 해당된다. 또한 core를 늘리는 것은 전력 소모가 커진다는 것인데 전력 소모가 커지면 발열 문제 또한 발생한다. 이렇듯 지금까지 과거에 computer architecture는 여러 한계와 도전에 직면해왔고 이는 보통 하드웨어적 방법으로 해결하고자 하였다.

 

 하드웨어를 중심으로 성능을 높이는 것이 부족하다고 느끼고 추가적인 방법을 찾는 것이 현재 computer architecture의 상황이다. 이 논문에선 2가지를 제시하고 있다. 첫번째는 현대 high-level 프로그래밍 언어의 성능을 높이는 것이다. 여기선 c언어와 python을 비교하고 있는데 python이 c보다 implementing과 translating이 효과적이진 않지만 전체적으로 봤을 때 python이 c보다 높은 잠재력을 가지고 있다고 예시를 들어 설명하고 있다.

 

 두번째는 domain-specific architectures(DSAs)로, 지금까지 고민하고 개발하였던 general purpose CPU architecture에서 벗어나 특정 domain에서 general purpose CPU보다 효율적으로 동작하는 구조를 연구하는 것이다. General purpose CPU와 다르게 DSAs는 특정 domain에서만 동작하므로 덜 복잡하고 주어진 환경에서 더 성능이 좋다는 특징을 가진다. 이런 연구의 결과로 GPU, TPU와 SDN용 프로세서과 같은 프로세서들이 등장하였다.

 

 현재는 이런 기술적인 측면 외에도 여러 요인들이 computer architecture를 발전시키고 있다. 오픈소스와 새로운 프로세스 모델이 이 중 하나이다. GNU 프로젝트와 Linux의 오픈소스 프로젝트의 시작으로 오픈소스와 오픈소스 커뮤니티가 성장하였고 ISA도 오픈소스화 되고 있다 (Open Architectures). 오픈소스로 관리하면 여러 분야의 사람들이 오픈소스로 공개된 프로젝트의 문제점을 찾아줄 수 있고 더 좋은 방향으로 발전시킬 수 있다. 그리고 오픈소스는 다양한 사람들의 입맛에 맞게 custom되어 사용될 수 있다는 장점이 있다.

 

 다른 하나는 새로운 프로세스 모델의 등장이다. 지금까지는 프로젝트를 계획 단계에서 운영 및 유지보수까지 프로세스로 나누고 각 프로세스를 위에서부터 순서대로 진행하는 폭포수(waterfall) 모델을 사용했지만 애자일 프로세스의 등장으로 프로젝트를 진행하며 피드백을 빠르게 받을 수 있고 좀 더 유기적으로 대처하고 개발할 수 있게 되었다.

애자일 프로세스 중 하나인 스크럼(scrum)

 

 이러한 여러 문제점과 한계, 그리고 다른 요인들의 등장으로 현재 computer architecture는 더욱 발전할 가능성을 지니고 있고, 따라서 지금은 computer architecture의 황금기이다.

 

 이렇듯 ‘어떻게 하면 지금보다 성능이 나아질까?’, ‘어떻게 하면 성능을 가로막는 요인을 해 결할 수 있을까?’와 같은 질문은 computer architecture를 발전시켜왔다. 게다가 현대에 와서는 이런 질문 뿐만아니라, 오픈소스 커뮤니티 활성화, 새로운 프로세스 모델의 등장과 같은 기술 외 요인들이 computer architecture의 발전에 박차를 가하고있다.


 

'컴퓨터구조' 카테고리의 다른 글

캐시 일관성(cache coherence)과 프로토콜  (0) 2023.02.07
캐시의 기본(Cache memory)  (0) 2023.02.02
멀티코어의 등장 배경  (0) 2023.01.12