<컴퓨터 구조 이해하기>
1. 컴퓨터의 언어, 이진법
이진법
컴퓨터는 통신을 하기 위해 0과 1만을 사용하는 이진법을 언어로 사용
0123456789 → 10진법
01 → 2진법
비트와 바이트
비트
• 데이터의 최소 단위
• 이진수로 총 몇 자리인지를 나타낸다
바이트
• 1바이트 = 8비트
• 작은 단위인 bit는 소문자 b로, 보다 큰 단위인 Byte는 대문자 B로 적는다
2. 논리 연산
논리연산
0과 1의 전달 방법
• 컴퓨터가 0과 1이라는 언어를 서로 주고 받을 수 있는 비밀
→ 반도체
반도체
• 상황에 따라 전기가 통하기도 하고 통하지 않기도 하는 특수한 물질
두 부품사이에 전기가 흐르면 1, 흐르지 않으면 0
논리 연산
• 0 거짓, off
• 1 참, on
• AND, OR , NOR
두 가지 작동 방식
- 두 신호가 모두 On이어야 작동하는 경우 (AND 연산)
- 두 신호 중 하나만이라도 On이면 작동하는 경우 (OR 연산)
세가지 기본 논리연산
• AND
• OR
• NOR
네 가지 응용 논리 연산
• NAND → AND 결과의 반대
• NOR → OR 결과의 반대
• XNOR → XOR 결과의 반대
• XOR
4. 회로 설계
논리연산 7개를 잘 조합하면 컴퓨터의 칩을 만들 수 있음
회로설계
회로 추상화
→ 입력과 출력만 알려줘도 된다 (연산을 보여주지 않아도 됨)
내부의 동작을 보여주지 않아도 된다
5. CPU
프로그램을 실행하는 칩, CPU
CPU (중앙 처리 장치)
• 머신 코드를 실행하는 곳
• 컴퓨터의 머리 역할을 해주기 때문에
• CPU의 입력선 개수는 정해져있기 때문에 머신코드의 자릿수도 정해져있다.
💡CPU가 한번에 동작을 할 수 있는 최소 단위
→ Instruction 인스트럭션
하나의 칩에 여러 기능 넣기
하나의 칩에 여러 기능 넣기
하나의 칩에 여러 기능을 넣는 것 → 어떤 기능을 사용할 지에 대한 입력신호가 미리 있다
ALU
• 여러가지 수학 연산 기능을 할 수 있는 칩
오퍼레이션 코드 (opcode)
• 어떤 기능을 활용할 건지 알려주는 추가적인 신호
• 여섯자리 내외
💡Instruction의 앞의 6자리가 opcode이다
CPU와 저장 장치
머신코드로 된 instruction을 CPU에게 주면 CPU는 정해진 동작을 수행한다
CPU의 Instruction
→ 저장 장치 관련
CPU와 관련된 저장장치
• 레지스터 → 가장 빠른 저장장치
8, 16 ,32 bit 레지스터
*hard disk ram → cpu의 내부의 저장장치
💡실행 속도 때문에 하드디스크에 저장된 파일을 램으로 복사해 두고 사용하기도 한다
머신 코드 실행하기
• cpu가 머신코드를 한 줄씩 읽어서 해석한다
컴퓨터의 추상화
프로그래밍의 추상화
→ 컴파일러는 복잡한 부분을 사용하지 않고도 프로그래밍을 작성가능 하게 함
어셈블리 언어
머신코드를 읽거나 직접 작성해야할 때
→ 어셈블리 언어를 사용해야한다
어셈블리 언어
읽을 수 있는 머신 코드
어셈블리 언어로 만들어진 어셈블리 코드를 머신 코드로 바꿔주는 프로그램→ 어셈블러
*컴파일러는 저수준에 가까움
32비트 시스템과 64비트 시스템
실제 컴퓨터는 instruction이 훨씬 길다
32 bit, 64bit instruction의 자릿수
→ 훨씬 더 많은 메모리
32bit → 메모리주소를 최대 4GB 까지 표현
64bit → 메모리주소를 최대 16 EB
6. 컴퓨터의 성능
컴퓨터의 속도
Hz 1초에 몇번이나 반복하는 지를 나타내는 단위
G Giga의 약자인데 10억을 의미
3.6 GHz → 1초에 36억번 반복
HZ가 클수록 CPU가 더 빠른 템포로 움직임
MIPS 시스템 (CPU 설계 방식 중 하나)
LOAD 5cycle
STORE 4cycle
CPU의 성능 지표
Clock Speed (Clock Rate)
• 앞서 배운 것과 같이, 1초에 실행할 수 있는 사이클의 개수
CPI (Cycles per instruction) 낮아야좋음
• 한 Instruction이 평균적으로 몇 사이클만에 완료되는지를 나타내는 지표
IPC (Instructions per cycle) 높아야 좋음
• 이 CPI를 뒤집으면 IPC
IPS (Instructions per second)
• Clock speed는 클럭이 얼마나 빨리 움직이는지를 알려주고, IPC는 그 하나의 클럭에 얼마나 많은 코드를 얼마나 소화할 수 있는지 알려줌
멀티 코어 (Multi-Core)
• 듀얼 코어라고 하는 건, CPU 하나 안에, 사실상 두 개의 CPU가 따로 따로 동작하도록 만든 것
대부분 멀티 코어를 사용하기 때문에 무조건 클럭 스피드만 높다고 빠른 건 아니다. 예를 들어, 듀얼 코어 4.2GHz와 쿼드 코어 3.5GHz를 비교하면, 쿼드 코어가 훨씬 빠름.
💡CPU의 성능을 결정하는 중요한 포인트
- 클럭이 얼마나 빠르냐 (Clock Speed),
- 한 클럭에 얼마나 많은 일을 할 수 있느냐 (CPI, IPC, IPS),
- 몇 개의 코어가 있느냐 (멀티 코어)
프로그램을 빠르게 실행하는 두 가지 방법
컴퓨터 프로그램이 실행되는 시간은 두 가지에 의해 결정
- 그 프로그램에 얼마나 많은 Instruction이 있는가
- Instruction을 실행하는 속도가 얼마나 빠른가
성능향상
프로그램의 속도를 올리는 법
1. 실행코드(머신코드)를 짧게
머신코드에 영향을 미치는 3가지 → 언어, 알고리즘. 컴파일러
instruction의 개수, 실행코드의 길이를 달라지게 할 수 있는 요소
2. 머신코드 실행속도를 빠르게
cpu의 성능 차례
- 파이프라인 → 일을 동시에 진행
- 예측 → 미리 필요한 데이터를 예측 (캐시메모리를 사용한다)
인텔의 공동 설립자인 고든 무어가 1965년에 "반도체의 밀도는 2년마다 약 2배씩 증가할 것"이라는 예측을 한 것이 무어의 법칙
'🏃♀️ 대외활동 > Codeit Boost-Node.js' 카테고리의 다른 글
4주차 스터디 모던 자바스크립트 (2) [코드잇 부스트 백엔드 스터디 ] (0) | 2024.05.25 |
---|---|
4주차 스터디 모던 자바스크립트 (1) [코드잇 부스트 백엔드 스터디 ] (0) | 2024.05.25 |
3주차 소프트웨어 이해하기 [코드잇 부스트 백엔드 스터디] (0) | 2024.05.20 |
2주차 프로그래밍과 데이터 in JavaScript [코드잇 부스트 백엔드 스터디] (1) | 2024.05.12 |
2주차 프로그래밍 핵심 개념 in JavaScript [코드잇 부스터 백엔드 스터디] (2) | 2024.05.12 |