바이트가 8 비트 인 이유는 무엇입니까?


86

8 비트 그룹을 기본 단위로 사용하기로 결정할 때, 작업중인 역사적 세력, 절충점은 어디에 있습니까?

한 번에 다른 단어 크기를 사용하는 기계가 있었지만 오늘날 8 비트가 아닌 경우 박물관 조각, 임베디드 응용 프로그램을위한 특수 칩 및 DSP를 찾아야합니다. 바이트는 컴퓨터 설계 초기의 혼란과 창의성에서 어떻게 진화 했습니까?

적은 수의 비트는 컴퓨팅을 실현하기에 충분한 데이터를 처리하는 데 비효율적이며 너무 많은 비트는 고가의 하드웨어로 이어질 것이라고 생각할 수 있습니다. 다른 영향이 있었습니까? 이러한 힘이 8 비트로 균형을 잡은 이유는 무엇입니까?

(BTW, 시간 여행을 할 수 있다면, "바이트"가 8 비트로 선언되었을 때로 돌아가서 모든 사람들이 12 비트로 만들어 21 세기 초반의 장신구와 뇌물을주고 자합니다.


7
이것은 오래된 위키 백과 보다 더 잘 대답 할 수없는 질문 중 하나 일 수 있습니다 .
Scott Whitlock

10
그렇다면 왜 12 비트에서 8 비트를 선호합니까?
FrustratedWithFormsDesigner

8
농담의 마지막 문장입니까? 12 비트 바이트는 2의 거듭 제곱이 아니므로 불편합니다.
Rob

19
메모리와 레지스터는 당시보다 저렴하지 않았으므로 6 또는 9 (36 비트 워드의 분수)와 비교하여 8 비트는 좋은 절충안이었습니다. 또한 주소 계산은 2의 거듭 제곱으로 훨씬 간단 해지며 작은 캔으로 원시 트랜지스터에서 논리를 만들 때 계산됩니다.
마이크 던 라비

9
"초창기"에는 2의 거듭 제곱 인 단어 크기를 사용하는 것이 그리 중요하지 않았습니다. DEC-10에는 36 비트 워드가 있고 CDC 6000 시리즈에는 60 비트 워드가 있으며 인덱스 레지스터는 18 비트입니다.
Jay Elston

답변:


75

실제로 5 비트 baudot 코드를 사용하여 많은 초기 작업을 수행했지만 빠르게 제한되었습니다 (32 자만 가능하므로 기본적으로 대문자 만 사용하고 몇 개의 문장 부호는 있지만 숫자를위한 "공백"은 충분하지 않음) .

거기에서 꽤 많은 기계가 6 비트 문자로 이동했습니다. 대문자와 소문자 (영문)와 숫자를 원한다면 문장 부호를 위해 두 문자 만 남았으므로 대부분 문자 세트에 문자가 하나만 있습니다.

ASCII는 7 비트 문자 세트를 정의했습니다. 그것은 오랫동안 많은 용도에 "충분히 좋았으며"가장 새로운 문자 세트 (ISO 646, ISO 8859, Unicode, ISO 10646 등)의 기초를 형성했습니다.

이진 컴퓨터는 디자이너에게 2의 크기를 제고하도록 동기를 부여합니다. 어쨌든 "표준"문자 세트에는 7 비트가 필요했기 때문에 2의 거듭 제곱을 얻기 위해 비트를 하나 더 추가하는 것은 그리 무리가되지 않았습니다. 더 수용 가능했습니다).

그 이후로 문자 세트는 16 및 32 비트로 이동 했지만 대부분의 주류 컴퓨터는 대부분 원래 IBM PC를 기반으로합니다. 다시 말하지만, PC가 현재 지배 수준에 도달하지 않더라도 모든 사람이 더 큰 문자로 모든 것을 할 것이라고 확신하지 못하는 8 비트 문자에 충분히 만족합니다.

또한 시장이 상당히 바뀌 었다고 덧붙여 야합니다. 현재 시장에서 문자 크기는 소프트웨어보다 하드웨어에 의해 덜 정의됩니다. Windows, Java 등이 오래 전에 16 비트 문자로 이동했습니다.

이제 16 비트 또는 32 비트 문자를 지원하는 데 방해가되는 것은 16 비트 또는 32 비트 문자 자체에 내재 된 어려움과 최소한 i18n을 일반적으로 지원하는 어려움에서 비롯됩니다. ASCII에서 (예를 들어) 문자가 대문자인지 소문자인지를 감지하거나 두 문자 사이를 변환하는 것은 매우 사소합니다. 전체 유니 코드 / ISO 10646에서 기본적으로 설명 할 수 없을 정도로 복잡합니다 (표준은 시도조차하지 않습니다-설명이 아닌 테이블을 제공합니다). 그런 다음 일부 언어 / 문자 세트의 경우 대소 문자의 기본 개념 조차 적용되지 않는다는 사실을 추가 합니다. 그런 다음 일부 문자를 표시하는 것조차 훨씬 더 복잡하다는 사실을 추가합니다.

그것은 대부분의 소프트웨어가 시도조차하지 않는 것으로 충분히 복잡합니다. 상황은 서서히 개선되고 있지만 작동 단어는 립니다.


9
나는 8 비트가 7 비트 ASCII에서 나온 것과 거의 모든 전송 프로토콜이 디자이너가 원하는만큼 손실이 적지 않기 때문에 필요한 유효성 검사 비트에서 온 것이라고 생각했습니다.
Martin York

3
@LokiAstari, 예. 패리티 비트라고하며 조잡한 형태의 오류 감지 또는 복구에 사용될 수 있습니다. Wikipedia : 패리티 비트
CVn

2
IBM PC가이 작업과 어떤 관련이 있는지 확실하지 않습니다. "바이트 당 8 비트는"이미 8080 CPU (는 IBM PC 시대의 8분의 8,086의 전신)에 시작 CP / M 시대 (<1980), 표준이었다
MSalters

1
@MSalters : 기본적으로 하드웨어의 진화를 "논란"시켰습니다. 아니요, 8 비트 / 바이트는 PC에서 새로운 것이 아니 었지만 그때까지는 대부분의 아키텍처가 몇 년마다 교체되었습니다. PC는 그 점을 크게 멈추고, 새 시대에 특별히 진보적이지 않은 아키텍처를 취해 수십 년 동안 보존했습니다 .
Jerry Coffin

2
현재 문자 세트는 16 비트 또는 32 비트가 아니며 Java 및 Windows에서도 사용하지 않습니다. 현재 문자 세트는 유니 코드이며 직접 매핑하려면 21 비트가 필요합니다. 현재 소프트웨어는 8 (UTF-8), 16 (UTF-16) 또는 32 (UTF-32) 비트 코드 단위를 기반으로 한 인코딩을 사용하여 여러 코드 단위를 결합하여 필요한 경우 단일 코드 포인트를 형성하지만 그 비트 크기는 결과입니다 문자 세트가 아닌 하드웨어
Sebastian Redl

10

ASCII 정보 용 7 비트, 오류 감지 패리티 용 1 비트.


27
ASCII를위한 7 비트와 모든 종류의 것들에 사용 된 여분의 비트
Martin Beckett

1
초기 기억을 다룰 때 패리티는 매우 중요했습니다. 8 비트 데이터 바이트로 이동 한 후에도 패리티 검사가 가능한 9 비트 메모리 칩이있었습니다.
Jim C

1
이것은 흥미로운 주장이다. 아이디어를 뒷받침 할 이력 데이터가 있습니까?
david

6

8 비트 아키텍처의 Wikipedia 페이지를 살펴보십시오 . 문자 세트는 5, 6, 7 비트 일 수 있지만 기본 CPU / 메모리 버스 아키텍처는 항상 2의 제곱을 사용했습니다. 최초의 마이크로 프로세서 (1970 년 대경)에는 4 비트 버스가있었습니다. 외부 메모리와 CPU 사이의 데이터 비트.

그런 다음 8080 프로세서가 출시되면서 8 비트 아키텍처가 인기를 얻었으며 오늘날까지도 사용되는 x86 어셈블리 명령어 세트의 시작이었습니다. 내가 추측해야 할 경우, 주류 대중이 PC를 수락하고 재생하기 시작한 초기 프로세서에서 바이트가 왔으며 8 비트는 단일 데이터 단위의 표준 크기로 간주되었습니다.

그 이후로 버스 크기는 두 배가되었지만 항상 2의 거듭 제곱을 유지했습니다 (예 : 16, 32 및 64 비트). 실제로 오늘날 버스의 내부는 단순히 64 개의 병렬 와이어보다 훨씬 복잡합니다. 현재 주류 CPU 아키텍처는 64 비트입니다.

필자는 항상 50 % 증가하는 대신 두 배로 늘리면 기존 응용 프로그램 및 기타 레거시 구성 요소와 공존하는 새로운 하드웨어를 만드는 것이 더 쉽다고 가정합니다. 예를 들어, 8 비트에서 16 비트로 전환 할 때 각 명령은 이제 1 대신 2 바이트를 이동할 수 있으므로 한 번의 클록주기를 절약 할 수 있지만 결과는 같습니다. 그러나 8 비트에서 12 비트 아키텍처로 전환하면 원본 데이터를 절반으로 나누고 관리하는 것이 성 가실 수 있습니다. 이것들은 단지 추측 일뿐입니다. 저는 하드웨어 전문가가 아닙니다.


5
"최초의 CPU (1970 년 대경) ..." . 당신은 컴퓨팅의 역사에 대해 약간의 독서를해야합니다 !! 폰 노이만 아키텍쳐 컴퓨터를위한 최초의 CPU는 2 차 세계 대전 중 또는 그 이전에 (어떤 버전의 역사를 믿는지에 따라) 구축되었습니다.
Stephen C

그리고 19 세기에 컴퓨팅 장치가 있었고 나는 이집트인들이 어떤 종류의 계산기 포트를 가지고 있다고 확신합니다. 그 정보는 내가 연결 한 Wikipedia 페이지에서 온 것입니다. 내가 말했듯이, 나는 하드웨어 전문가가 아니며 확실히 역사가는 아니지만, 너무 멀리 떨어져 있다고 생각되면 위키 백과 페이지를 업데이트하고 싶을 수도 있습니다.
DXM

내가 들어가면서 링크를 망쳐 놓지 않으면 도움이 될 것 같습니다. 또한 "첫 번째 CPU"라고 말한 것에 대해 사과드립니다. 위키 페이지를 인용 한 이후로 "첫 번째 마이크로 프로세서"라고 말했을 것입니다. 그게 내 뜻이야 미안합니다.
DXM

"사전 전자"컴퓨터에 대한 해결책은 현대 컴퓨터 또는 전자 컴퓨터라고 가정하는 것입니다. 오늘날에도 기계식 컴퓨터를 만들 수 있습니다. 우리가 전자장을 사용하기 시작하기 전까지는 마이크로 프로세서를 만들었습니다.
Ramhound

PDP 시리즈에서 사용되는 8 비트 바이트 및 16 비트 워드 크기는 8 비트 바이트의 인기도에 영향을 미쳤을 수 있습니다.
Jay Elston

4

바이트는보고있는 컴퓨터에 따라 1, 4, 6, 7, 8, 9, 12, 18, 20 및 36 비트로 다양합니다. 나는 텍스트 중심 해석을 사용하기보다는 "어드레스 가능한 메모리 단위"를 의미하기 위해 "바이트"를 사용하고 있습니다. (예를 들어, 인기있는 HP48SX / GX 계산기 라인에 사용되는 64 비트 CPU 인 Saturn CPU는 니블 (4 비트) 단위로 메모리를 처리합니다.)

20 비트 바이트는 50 년대 "IAS 머신"에서 매우 일반적이었습니다. 6, 12, 18 (그리고 아마도 36)은 60, 70, 80 년대의 다양한 아키텍처에서 꽤 인기가있었습니다.

결국, "2의 거듭 제곱"과 "어드레싱 가능한 단위의 비트"사이에 좋은 통신 관계를 갖는 것이 승리 한 것 같습니다.


그리고 절대 10 비트? Google에서 찾을 수있는 것은 최근 비디오 프로세서가 10 비트라는 것입니다.
rslnx

@khrf 가능하다. 나는 그것을 가진 어떤 아키텍처도 기억할 수 없다 (주로 범용 컴퓨터라고 생각했다).
Vatine

예, 범용 컴퓨터도 고려합니다. 나는 당신이 등 물론 1 바이트, 2 바이트와 1 메가 바이트로 1킬로바이트를 해결할 수 있음을 알고 10 비트 바이트와 함께 얼마나 좋은 상상 때문에 이상한, 그것은 :) 편안함에 그냥 변덕입니다
rslnx

2

먼저 약간의 설명 : 옥텟 (8 비트 단위)은 실제로 현대 컴퓨터 아키텍처 의 기본 단위 가 아닙니다 . 2, 2, 4, 16, 32, 64, 128 등의 다른 제곱보다 적어도 기본은 아닙니다. 옥텟은 8 비트 프로세서 (따라서 이름!)의 기본 단위 였지만 현대 아키텍처는 일반적으로 더 큰 비트로 작동합니다 내부적으로 설정합니다. 예를 들어 x86_64에는 64 비트 정수 레지스터와 80 비트 부동 소수점 레지스터가 있습니다. RAM은 64 비트 청크로 읽히고 쓰여지며, 프로세서는 약간의 마술을 사용하여 개별 8 비트 바이트를 처리 할 수있는 것처럼 보입니다.

이전 아키텍처의 경우 "바이트"는 데이터 버스의 크기를 나타내 었으며 원래 질문으로 여러 가지 버스 크기가 존재했습니다 (4, 5, 6, 8, 12 등). 그러나 1993 년 이래로 데이터 크기에 대한 표준화 된 SI 단위를 갖기 위해 바이트는 8 비트로 정의 되었습니다 . 따라서 "바이트"의 의미는 아키텍처 종속 단위에서 아키텍처 독립적 표준화 단위로 변경되었습니다.

요즘 바이트는 데이터를 주소 지정하고 정량화하기위한 표준 단위이지만 실제로는 기본이 아닙니다.

옥텟 단위는 주로 텍스트 저장에 대한 우려로 인해 저장에 대한 사실상의 표준이되었습니다. 텍스트를 저장하기 위해서는 1 바이트를 문자로 저장하는 것이 이상적입니다. 두 가지 요소가 중요했습니다.

  • 디지털 시스템을 설계 할 때 2의 거듭 제곱 (2, 4, 8, 16, 32 등)을 갖는 것이 더 편리합니다.
  • 8 비트는 ASCII 문자 세트에 단일 문자를 저장하기에 충분합니다 (키릴 문자를 지원하도록 문자 세트를 확장하기위한 여유 공간이 있음).

물론 8 비트는 모든 스크립트를 지원하기에 충분하지 않습니다. 일본어와 같은 것에는 최소한 16 비트가 필요하지만 가치가있는 것은 유니 코드는 21 비트입니다. 그러나 그 시점에서 비트는 비싸고 대부분의 디지털 텍스트는 어쨌든 ASCII 범위.

요즘 텍스트는 일반적으로 UTF-8과 같은 가변 너비 인코딩에 저장되며 유니 코드와 같은 문자 결합을 통해 "1 바이트는 한 문자와 같습니다"는 과거의 일이었습니다. 오늘날 바이트는 실제로 역사적인 이유로 표준입니다.


1

내 정보에 따르면 단어 바이트 자체는 8 비트 단어 인 8 개 구에서 파생되었습니다. 우리가 8 비트 단어에서 찾은 편의는 00000000 = 00 & 11111111 = FF (부호없는 12 월 255 및 부호있는 경우 -127)이므로 16 진수 값으로 변환하는 것입니다. 비트 단위를 포함하여 이러한 구조에서 모든 산술 연산을 수행하기 쉽습니다. 작업.

나는 바이트 (8 비트 워드)를 단어 크기가 자연스럽게 작은 3 비트에서 엄청나게 큰 60 비트 단어로 진화 한 것으로 본다


이에 대한 참조를보고 싶습니다. 진심으로 의심합니다. 특히 C 표준에서 사용되고 C ++ 표준에 통합 된 "바이트"라는 단어는 "8 비트"를 의미하지 않습니다. 8 비트 수량은 옥텟입니다.
gnasher729

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.