1.컴퓨터의 구조
1) CPU
CPU는 컴퓨터의 두뇌로, 메모리에 저장된 명령어를 읽어들이고, 읽어 들인 명령어를 해석해 실행하는 부품이다. CPU를 구성하는 가장 중요한 세 가지는 산술논리연산장치(ALU), 레지스터, 제어장치(CU)이다.
-구조
1) ALU : = 계산기. 오직 연산만을 위해 존재하는 부품으로 컴퓨터 내부에서 수행되는 대부분의 계산을 도맡아한다.
2) 레지스터: CPU 내부의 작은 임시 저장장치. 프로그램을 실행하는데 필요한 값들을 임시로 저장한다. CPU 안에는 하나가 아닌 여러개의 레지스터가 존재하고 각각 다른 역할을 한다.
레지스터에는 다음과 같은 종류가 있다.
- 메모리 주소 레지스터: (MAR) : 읽고 쓰기 위한 주기억장치의 주소 저장
- 프로그램 카운터 (PC) : 다음에 수행할 명령어의 주소를 저장
- 명령어 레지스터 (IR) : 현재 실행 중인 명령어를 저장
- 메모리 버퍼 레지스터 (MBR) : 주기억장치에서 읽어온 데이터나 저장할 테이터를 임시로 저장
- 누산기 (AC, ACCUMULATOR) : 연산 결과를 임시로 저장
3) 제어장치: 제어신호라는 전기 신호를 보내고 명령어를 해석하는 장치. CPU가 자신 및 주변 기기들을 컨트롤 하도록 하는 장치로, 프로그램의 수행 순서를 제어하는 프로그램계수기, 현재 수행중인 명령어의 내용을 임시 기억하는 명령 레지스터, 명령 레지스터에 수록된 명령을 해독해 수행될 장치에 제어신호를 보내는 명령해독기로 이루어져 있다.
- 동작
1) 데이터 가져오기 : RAM -> CPU로 전달됨. 이때 명령어들은 프로그램 카운터(PC)에 의해 보관되고 지침 레지스터(IR)에 배치된다.
2) 디코딩 : 명령을 가져와 IR 에 저장하면, 명령 해독기 회로로 명령을 전달하고 이는 작동을 위해 전달되는 신호로 변환된다.
3) 실행 : 디코딩 된 명령문은 완료될 CPU 부분으로 전송되고 결과는 CPU 레지스터에 기록된다. 이 레지스터는 이후 명령문에 의해 참조될 수 있다.
2)메모리
- 주기억장치 RAM
현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품이다. 이 메모리에 저장된 값에 빠르고 효율적으로 접근하기 위해 '주소'라는 개념이 사용되며 원하는 위치에 접근할 수 있다.
전원이 꺼지면 데이터가 지워지기 때문에 (휘발성), 하드디스크로부터 일정량의 데이터를 복사해서 저장해둔 뒤 필요할 때마다 CPU에게 전달한다.
특정 프로그램을 실행하면, 컴퓨터는 보조기억장치에 저장된 데이터를 주기억장치로 불러와 CPU가 해당 데이터를 처리하는 과정으로 실행된다. 주기억장치는 휘발성 메모리 RAM이기 때문에, 데이터를 읽는 속도가 보조기억장치에 비해 상대적으로 빠르다. 현재 비휘발성 RAM을 개발하고 있지만 아직 속도나 효율이 기존 RAM을 따라가지 못하기 때문에 사용하지 않는다.
이 이외에도 고속의 처리 장치인 CPU와 주기억장치 사이의 속도 차이를 완화시키기 위해 고속 버퍼(임시) 메모리로, CPU와 주기억장치 사이에 존재하는 "캐시 메모리(Cache Memory)"가 있다.
3) 보조기억장치
사용자가 사용하고자 하는 데이터와 프로그램을 반영구적으로 저장한다. 이는 전원을 끄더라도 저장된 데이터나 정보가 날아가지 않는 비휘말성 메모리로, 우리가 설치하는 모든 프로그램이나 파일들이 이곳에 반영구적으로 저장된다.
주기억장치는 연산 종료 후 보조기억장치에 저장하기도 하며 수시로 이 보조기억장치의 데이터를 복사해 저장해두고 사용한다.
HDD, SSD 등이 있으며 오늘날에는 크기가 작고 연산이 빠른 (그러나 비싼) SSD가 주로 사용된다.
* M1, M2칩
M1칩으로 맥북을 처음 접해본 나 .... 윈도우에서 버벅이다가 신세계를 경험했다
M1칩은 단순히 CPU로만 구성되어 있는 것이 아니다. CPU, GPU, 메인메모리 등과 같이 다양한 요소들이 이 M1칩 내부에 모두 들어가있다. 따라서 장치간의 이동 거리도 짧고 통합 메모리 구조를 가졌기 때문에 CPU 효율이 극대화된다. 이를 단일 시스템 온칩이라고 하며
M1칩이 빠를 수 있는 이유는 특히나 빠른 범용 CPU 코어인 Firestorm 덕분이다. 여러 명령이 순서대로 들어올 때, 중간에 끼어있는 한 명령어를 수행하는데 오랜 시간이 걸리면 그 다음 명령은 수행되지 않고 CPU는 놀고있게 된다.
하지만 Firestorm 같은 경우는 실행 순서과 상관 없는 명령어 (의존성이 없는) 같은 경우 대기만 하지 않고 명령어를 수행하여 동일 시간에 더 많은 명령어를 병렬적으로 수행할 수 있게 한다. 이러한 기술이 특화되어있기 대문에 성능이 향상된 것이다.
Reference :
https://uptechkr.com/%EC%95%A0%ED%94%8C-m1-%EC%B9%A9/
'Computer Programming > CS' 카테고리의 다른 글
인증/인가 (세션, 토큰, JWT) (0) | 2023.07.05 |
---|---|
'www.google.com'을 브라우저 주소창에 입력하면 일어나는 일 (웹의 동작 방식) (0) | 2023.07.03 |
페이지 렌더링 방식 : SSR vs CSR vs SSG [+Next.js] (3) | 2023.06.23 |
자바스크립트의 클로저 동작 방식 (렉시컬환경과 렉시컬 스코프) (0) | 2023.06.21 |
[DB] SQL 과 NoSQL의 차이 (MySQL vs MongoDB) (0) | 2023.05.10 |