안녕하세요 개발자 도도 입니다
개발자로 현업에서 재직하며 기본기가 중요하다는 걸 늘 느끼고 있습니다
물론 이런 지식이 없어도 '코딩'을 하는 데에는 아무 문제가 없겠지만 더 나은 개발자가 되기 위해
집에 굴러다니던 컴퓨터 구조 서적을 한 챕터씩 공부해서 정리해보고자 합니다 ㅎㅎ
혹시나 틀린 개념이 있거나 잘못된 설명이 있다면 댓글 남겨주시면 참고 수정 하도록 하겠습니다
저도 공부하는 입장이라 언제든지 틀릴 수 있거든요 ㅠㅠ
오늘은 그 첫 시간인 튜링기계와 폰노이만 구조에 대해서 알아보려고 합니다
우리가 컴퓨터라는 용어를 사용하기 전의 시대에는 컴퓨터는 단순히 계산기 역할이었습니다
1) 과거의 컴퓨터 형태
input -> 계산기 -> output
이런 형태로 input(입력)을 넣었을 때 처리과정을 통해 output(출력)이 되는 거죠
그런데, 튜링(물론 튜링외에도 많이 있었겠지만)은 행동표에 따른 규칙에 따라
할 수 있는 일이 정해지는 기계를 제시합니다
이 개념이 바로 튜링기계 입니다
2) 튜링 기계
프로그램
input -> 컴퓨터 -> output
이 당시 프로그램이란 개념은 우리가 생각하는 개발 언어로 짜여진 소프트웨어 개념이 아니라 하드웨어 기반입니다
이런 식으로 말이죠 회로 설계 형태의 컴퓨터 였습니다
그런데 여기서 한 단계 더 나아갑니다
프로그램이 메모리 안으로 들어 가게 되는 거죠 이게 바로 폰 노이만 구조입니다
지금은 당연할 수 있지만, 저 당시에는 메모리 안에 프로그램을 넣는 다는 생각을 할 만큼 메모리가
발전하지도, 또 프로그램의 기술력이 향상되지도 못했습니다
3) 폰 노이만 구조
Central Processing Unit (CPU)
Control Unit
input -> Arithmetic / Logic Unit -> output
Memory
폰 노이만 구조는 이후 폰 노이만 병목현상 등 새 문제가 야기 되어 하버드 아키텍쳐라는 개념도 생기지만
이건 다음 포스팅에서 정리해보도록 하겠습니다
아무튼 결론을 짓자면
튜링 기계는 프로그램을 통해서 실행할 수 있는 컴퓨터라는 개념을 처음 정립을 하였고,
폰 노이만 구조는 오늘날의 컴퓨터 처럼 CPU, 메모리 등의 구성을 갖춘 컴퓨터라는 개념을 정립을 하였다라고 생각하면 될 것 같습니다