🙇 시작하며
물론 알고있는 내용들도 많지만 CPU에 대해서 간단하게 정리해보고 싶어서 이렇게 글을 먼저 작성하게 되었다. 아래와 같이 homebrew CPU라고 집에서 CPU도 만들 수 있다! (솔직히 나중에 만들어 보고 싶다... 극강의 공돌이만 도전 할 듯..?)
CPU에 들어가기 전에 아주 기본부터 짚고 가보고 싶어서 정보 단위부터 글을 작성하게 되었다.
💿 정보 단위
💡 Bit
Bit는 정보 또는 처리능력의 최소 단위이다. 존 와일더 투키(John Wilder Tukey) 박사가 1947년 Binary digits의 축약어에서 고안했다고 한다. 0또는 1의 값을 갖고 있다.
💡 Byte
사실 바이트가 우리가 쓰는 정보의 단위라고 생각할 수 있다. 8 Bit == 1 Byte 이다.
🧐 왜 8비트는 1바이트 일까?
여기서 갑자기 궁금해졌다. 왜 하필 8비트가 1바이트일까? 8비트면 십진수로 나타내면 256이라고 할수도 있다. ASCII 코드를 보면 어느정도 유추가 가능하다.
바로 제어문자 영어, 삭제까지 넣으면 딱 0~127까지 표현이 가능했다.
범위 | 설명 | 예시 |
0~31 | 제어 문자 (Control Characters) | NULL(0), ESC(27) |
32~126 | 출력 가능한 문자 (Printable Characters) | A-Z, a-z, 0-9, !@#$%^&* |
127 | 삭제(DEL, Delete) | DEL(127) |
앗 그런데 여기서 보면 09다음에 0A가 되는 것을 볼 수 있는데, 이것은 16진수로 표현되어 있다. 1바이트는 8비트로 되어있고, 만약에 NUL을 표현하려고 해도 00000000으로 표현해야 하니 가독성이 아주 떨어진다. 이것을 변환하기도 쉽고 읽기도 쉽게 0x00형식으로 4숫자씩 끊어서 16진수로 변경해주었다고 한다. 앞에 0x가 붙는건 C언어에서 16진수를 구분하게 위해 표기했다고 하는데 이것이 쭉 이어지는 것 같다.
그러면 7비트... 아닌가? 😳 싶지만 오류 검사를 위한 패리티 비트(Parity Bit)까지 포함되어 8비트가 되었다고 한다. 여기서 패리티 비트는 짝수 패티리 비트, 홀수 패리티 비트로 나뉘는데 어떻게 오류 검사를 하냐면 송수신할때 비트들의 1의 개수가 짝수가 되게 합시다! 한다면 1010001이라는 데이터에 1을 하나 더 붙여서 11010001을 전송하고 받는 쪽에서는 1의 개수로 전송중 오류를 파악했다고 한다. 이렇게 쓰는 것이 짝수 패리티 비트, 홀수는 데이터에있는 1의 개수가 홀수라고 생각하면 된다.
영어의 경우 알파벳이기 때문에 예를 들면 한글의 경우 1바이트로 표현을 못하기 때문에 2~3바이트로 표현을 하게 된다. 현재는 4바이트까지 써서 다양한 언어와 이모티콘까지 표현하게 되었다. 이것을 유니코드라고 한다.
하지만 영어의 경우 아주 억울할 수 있다(?) 나는 1바이트인데 다른언어때문에... 심지어 이모티콘때문에 4바이트까지 써야해? 그래서 나온 것이 UTF-8(Unicode Transformation Format - 8-bit)이라고 가변길이 인코딩 방식이다. 문자의 범위에 따라 아래와 같이 앞에 0, 10, 110, 1110을 붙여 효과적으로 데이터를 관리한다고 한다.
💡 SI 접두어, 이진 접두어
대중화된건 kB, MB, GB이지만 (당장 내 맥북 정보를 들어가보면 GB로 표현되어 있다) 간혹가다 KiB, MiB용어를 보게 되는데 SI 접두어, 이진 접두어 차이라고 한다. 당연히도 비트, 바이트는 이진수가 베이스로 되어있는데 십진수 단위로 한다는 것이 이상하긴 하다. 단위가 커질수록 차이가 늘어나니 눈 크게 뜨고 잘 봐야겠다고 생각했다.
'→ Computer Science' 카테고리의 다른 글
[CS] 프로세스와 스레드 딥다이브 - 4. 스레드 (0) | 2025.01.18 |
---|---|
[CS] 프로세스와 스레드 딥다이브 - 3. 실행, Context switch?? (0) | 2025.01.18 |
[CS] 프로세스와 스레드 딥다이브 - 2. 프로세스의 구조?? (1) | 2025.01.18 |
[CS] 프로세스와 스레드 딥다이브 - 1. 딥다이브 전 기초지식 (0) | 2025.01.18 |
[RTMP] RTMP 프로토콜 개요 (7) | 2024.11.08 |