워드 (컴퓨팅)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
워드(word)는 컴퓨터 아키텍처에서 사용되는 데이터의 기본 처리 단위이다. 워드의 크기는 컴퓨터의 종류에 따라 다르며, 정수, 부동 소수점 숫자, 메모리 주소, 레지스터, 명령어 등을 저장하는 데 사용된다.
워드는 메모리-프로세서 간 데이터 전송, 주소 분해능 단위, 명령어 크기 선택에도 영향을 미치며, 컴퓨터 아키텍처 설계에서 중요한 요소이다. 인텔 CPU와 마이크로소프트 개발 도구에서는 워드가 16비트를 의미하는 경우가 많으며, 32비트는 DWORD, 64비트는 QWORD로 표현하기도 한다. 다양한 워드 크기가 존재하며, 과거에는 문자 인코딩의 영향으로 워드 크기가 결정되기도 했다.
더 읽어볼만한 페이지
- 원시 자료형 - 참조
참조는 프로그래밍에서 메모리 주소나 다른 데이터를 가리키는 값으로, 데이터의 효율적인 전달과 공유를 위해 사용되며, 포인터, 파일 핸들, URL 등이 그 예시이다. - 원시 자료형 - 문자열
문자열은 사람이 읽을 수 있는 텍스트를 저장하고 정보를 전달하거나 받는 데 사용되는 순서가 있는 문자들의 시퀀스로, 다양한 형태의 데이터를 표현하며 유한한 길이를 가지고, 프로그래밍 언어에서 기본 또는 복합 자료형으로 제공되고, 문자 집합과 인코딩 방식에 따라 표현 방식이 달라진다. - 데이터 단위 - 바이트
바이트는 디지털 정보의 기본 단위로, 일반적으로 8비트로 구성되지만, 역사적으로는 다양한 비트 수를 가질 수 있었으며, 컴퓨터 메모리 용량이나 데이터 크기를 나타내는 데 널리 사용된다. - 데이터 단위 - 16비트
16비트는 16비트 정수를 사용하여 216개의 값을 저장할 수 있는 컴퓨터 아키텍처를 의미하며, 1950년대에 등장하여 미니컴퓨터와 마이크로프로세서에 널리 사용되었고, 64 KiB 메모리에 직접 접근 가능하며 뱅크 전환 등의 메모리 확장 방식을 사용했으며, MS-DOS, OS/2 1.x 등과 같은 운영 체제와 Windows Metafile, UTF-16 등의 파일 형식이 존재하며, 현재는 임베디드 시스템에서 활용된다. - 정보의 단위 - 제타바이트
제타바이트는 컴퓨터 저장 용량을 나타내는 단위 중 하나로, 킬로바이트, 메가바이트 등과 함께 사용되며 십진 접두어와 이진 접두어의 혼동에 주의해야 한다. - 정보의 단위 - 테라비트
테라비트는 1조 비트를 나타내는 정보량 단위로, 테라바이트와 혼동될 수 있으며, 컴퓨터 분야에서는 테비비트가 사용되기도 하고, 고속 네트워크 속도나 고용량 메모리 용량을 나타낼 때 주로 사용된다.
워드 (컴퓨팅) | |
---|---|
컴퓨터 아키텍처 용어 | |
정의 | 컴퓨터에서 처리하는 기본적인 메모리 단위 |
크기 | 컴퓨터 아키텍처에 따라 다름 |
표현 범위 | 이진수로 특정 범위의 숫자 표현 가능 |
비트 폭에 따른 종류 | |
4비트 | 2^4 (16) 가지 값 표현 가능 |
8비트 | 2^8 (256) 가지 값 표현 가능 |
12비트 | 2^12 (4,096) 가지 값 표현 가능 |
16비트 | 2^16 (65,536) 가지 값 표현 가능 |
18비트 | 2^18 (262,144) 가지 값 표현 가능 |
24비트 | 2^24 (16,777,216) 가지 값 표현 가능 |
26비트 | 2^26 (67,108,864) 가지 값 표현 가능 |
30비트 | 유니박 490에 사용됨 |
31비트 | 2^31 (2,147,483,648) 가지 값 표현 가능 |
32비트 | 2^32 (4,294,967,296) 가지 값 표현 가능 |
36비트 | 2^36 (68,719,476,736) 가지 값 표현 가능 |
45비트 | 2^45 (35,184,372,088,832) 가지 값 표현 가능 |
48비트 | 2^48 (281,474,976,710,656) 가지 값 표현 가능 |
60비트 | 2^60 (1,152,921,504,606,846,976) 가지 값 표현 가능 |
64비트 | 2^64 (18,446,744,073,709,551,616) 가지 값 표현 가능 |
128비트 | 2^128 (3.4028236692093846346337460743177e+38) 가지 값 표현 가능 |
256비트 | 2^256 (1.1579208923731619542357098500869e+77) 가지 값 표현 가능 |
512비트 | 2^512 (1.3407807929942597099574023728031e+154) 가지 값 표현 가능 |
비트 슬라이싱 | 여러 개의 비트를 묶어서 처리하는 방식 |
응용 프로그램 | |
8비트 응용 프로그램 | 8비트 CPU 기반 응용 프로그램 |
16비트 응용 프로그램 | 16비트 CPU 기반 응용 프로그램 |
32비트 응용 프로그램 | 32비트 CPU 기반 응용 프로그램 |
64비트 응용 프로그램 | 64비트 CPU 기반 응용 프로그램 |
부동소수점 정확도 (이진수) | |
반정밀도 | 16비트 (×½) |
미니플로트 | 24비트 |
단정밀도 | 32비트 (×1) |
확장 정밀도 | 40비트 |
배정밀도 | 64비트 (×2) |
확장 정밀도 | 80비트 |
4배 정밀도 | 128비트 (×4) |
8배 정밀도 | 256비트 (×8) |
부동소수점 정확도 (십진수) | |
Decimal32 | 32비트 |
Decimal64 | 64비트 |
Decimal128 | 128비트 |
기타 | |
관련 용어 | 니블 옥텟 바이트 |
2. 워드의 용도
컴퓨터 구성에 따라 워드 크기 단위는 다양한 용도로 사용된다.
- 고정 소수점 숫자: 고정 소수점 숫자를 표현하는데 사용되며, 주로 정수를 나타낸다. 일반적으로 워드 크기 또는 워드 크기의 배수/분수로 제공된다.
- 부동 소수점 숫자: 부동 소수점 숫자를 표현하는데 사용되며, 보통 워드 또는 워드의 배수 크기로 사용된다.
- 주소: 메모리 주소를 나타내는데 사용되며, 표현 가능한 범위 내에서 워드 또는 워드 크기의 배수/분수로 사용될 수 있다.
- 레지스터: 프로세서 레지스터는 저장하는 데이터 유형(정수, 부동 소수점 숫자, 주소 등)에 맞는 크기로 설계된다. 많은 컴퓨터 아키텍처에서 범용 레지스터는 여러 데이터 표현을 저장할 수 있다.
- 메모리-프로세서 전송: 프로세서가 메모리에서 레지스터로 데이터를 읽거나 쓸 때, 전송되는 데이터 양은 주로 워드 단위이다.
- 주소 분해능 단위: 연속적인 주소 값은 대개 연속적인 메모리 단위(바이트 또는 워드)를 가리킨다.
- 명령어: 기계어 명령어는 보통 아키텍처의 워드 크기이거나 RISC 아키텍처처럼 "char" 크기의 배수이다. 하버드 아키텍처에서는 명령어와 데이터 워드 크기가 다를 수 있다.
2. 1. 고정 소수점 수
컴퓨터에서 워드는 고정 소수점 숫자를 저장하는 데 사용될 수 있다. 이때, 정수와 같은 고정 소수점 수는 일반적으로 워드 크기 또는 그 배수/분수 크기로 제공된다.[1] 작은 크기는 메모리를 효율적으로 사용하기 위해 사용되며, 프로세서에 로드될 때는 일반적으로 더 큰 워드 크기로 들어간다.[1]2. 2. 부동 소수점 수
부동 소수점 숫자를 저장하는 데 사용되며, 일반적으로 워드 또는 워드의 배수로 표현된다.2. 3. 주소
메모리 주소를 위한 홀더는 필요한 값 범위를 표현할 수 있어야 하며, 종종 사용되는 크기는 워드이지만 워드 크기의 배수 또는 분수가 될 수도 있다.2. 4. 레지스터
프로세서 레지스터는 저장하는 데이터 유형(정수, 부동 소수점, 주소 등)에 적합한 크기로 설계되었으며, 많은 컴퓨터 아키텍처는 여러 표현으로 데이터를 저장할 수 있는 범용 레지스터를 사용한다.2. 5. 메모리-프로세서 전송
프로세서가 메모리 서브시스템에서 레지스터로 데이터를 읽거나 레지스터의 값을 메모리에 쓸 때, 전송되는 데이터의 양은 종종 워드이다. 단순한 메모리 서브시스템에서 워드는 메모리 데이터 버스를 통해 전송되며, 이 버스의 너비는 일반적으로 워드 또는 하프 워드이다. 캐시를 사용하는 메모리 서브시스템에서는 프로세서와 첫 번째 레벨 캐시 사이에서 워드 크기 전송이 이루어진다. 메모리 계층 구조의 하위 레벨에서는 일반적으로 더 큰 전송(워드 크기의 배수)이 사용된다.2. 6. 주소 분해능 단위
대부분의 컴퓨터에서 연속적인 주소 값은 연속적인 메모리 단위(바이트 또는 워드)를 지정한다. 이를 주소 분해능 단위라고 한다. 워드 단위 주소 지정을 사용하면 더 큰 메모리에 접근할 수 있지만, 개별 문자에 접근하려면 추가적인 비트 연산이 필요할 수 있다. 반면 바이트 단위 주소 지정을 사용하면 개별 문자에 쉽게 접근할 수 있다. 몇몇 컴퓨터는 비트 분해능을 사용하기도 한다.2. 7. 명령어
기계어 명령어는 일반적으로 아키텍처의 워드 크기이거나, RISC 아키텍처에서와 같이, 그 분수인 "char" 크기의 배수이다. 이는 명령어와 데이터가 일반적으로 동일한 메모리 서브시스템을 공유하기 때문에 자연스러운 선택이다. 하버드 아키텍처에서는 명령어와 데이터가 다른 메모리에 저장되므로, 명령어와 데이터의 워드 크기가 서로 관련될 필요가 없다. 예를 들어, 1ESS 전자 전화 교환기 내의 프로세서는 37비트 명령어와 23비트 데이터 워드를 가진다.[6]3. 워드 크기 선택
컴퓨터 아키텍처 설계에서 워드 크기 선택은 매우 중요하다. 특정 용도(예: 주소)에 적합한 비트 그룹 크기가 있지만, 설계 경제성을 위해 하나의 크기 또는 그 배수/분수 크기가 선호된다. 이렇게 선호되는 크기가 아키텍처의 워드 크기가 된다.
3. 1. 역사적 배경
과거(가변 크기 문자 인코딩 이전)에는 문자 크기가 주소 해상도 단위 및 워드 크기 선택에 영향을 미치는 요소 중 하나였다. 1960년대 중반 이전에는 문자가 주로 6비트에 저장되었으며, 이는 64자를 넘지 못해 알파벳이 대문자로 제한되었다. 시간과 공간 효율성을 위해 워드 크기는 문자 크기의 배수가 되는 것이 일반적이었으므로, 이 시기 워드 크기는 보통 6비트의 배수였다(이진 기계에서). 당시 널리 쓰이던 36비트 워드는 부동 소수점 형식의 숫자 속성에도 적합한 크기였다.IBM System/360 설계 도입 이후, 8비트 문자가 사용되고 소문자를 지원하게 되면서 문자(또는 더 정확하게는 바이트)의 표준 크기는 8비트가 되었다. 그 이후 워드 크기는 자연스럽게 8비트의 배수가 되었으며, 16, 32, 64비트가 주로 사용된다.
3. 2. 가변 워드 길이 아키텍처
초창기 기계 설계에는 흔히 "가변 워드 길이"라고 불리는 방식을 사용한 경우가 있었다. 이러한 유형의 구성에서 피연산자는 고정된 길이를 갖지 않는다. 기계와 명령어에 따라 길이는 카운트 필드, 구분 문자, 또는 워드 마크와 같은 추가 비트로 표시될 수 있다.[4] 이러한 기계에는 IBM 702, IBM 705, IBM 7080, IBM 7010, UNIVAC 1050, IBM 1401, IBM 1620, RCA 301이 포함된다.[4]이러한 기계의 대부분은 한 번에 하나의 메모리 단위를 사용하며, 각 명령어 또는 데이터는 여러 단위 길이이므로 각 명령어는 메모리에 접근하기 위해 여러 사이클이 소요된다. 이 때문에 이러한 기계는 종종 매우 느리다. 예를 들어, IBM 1620 모델 I의 명령어 인출은 12자리 명령어를 읽는 데 8 사이클(160μs)이 소요된다. 모델 II는 이를 6 사이클로 줄였고, 명령어에 두 개의 주소 필드가 필요하지 않은 경우 4 사이클이 소요된다. 명령어 실행은 피연산자의 크기에 따라 가변적인 수의 사이클이 소요된다.[5]
3. 3. 워드, 비트, 바이트 주소 지정
아키텍처의 메모리 모델은 워드 크기에 큰 영향을 받는다. 워드 어드레싱 방식에서는 인접한 주소 값이 인접한 메모리 워드를 지정한다. 이는 명령어가 주소를 포함하기 위해 최소 크기의 필드를 사용할 수 있게 하여, 더 작은 명령어 크기나 더 다양한 명령어를 가능하게 한다.바이트 어드레싱은 바이트 처리가 작업량의 상당 부분을 차지하는 경우에 더 유리하다. 이 방식에서는 인접한 주소 값이 인접한 바이트를 지정한다. 이를 통해 문자열 내의 임의의 문자에 쉽게 주소를 지정할 수 있지만, 워드 주소 지정 방식보다 더 많은 비트가 주소에 필요하다. 바이트 어드레싱 방식은 IBM 360에서 사용되었으며, 이후 설계된 머신에서 가장 일반적인 방식이 되었다.[1]
4. 인텔 CPU와 마이크로소프트 개발 도구에서의 워드
인텔의 8085 8비트 마이크로프로세서에서는 기본 처리 단위가 한 바이트였지만, 8086은 16비트 프로세서이므로 '워드'는 16비트가 되었다. 마이크로소프트의 소프트웨어 개발 도구(비주얼 스튜디오)에서 WORD(주로 대문자로 표시)는 16비트를 의미한다. i386에서 데이터형은 byte, word, doubleword로 구분하였고,[6] 소프트웨어 상에서 32비트는 DWORD로 표현한다.[8] i386의 32비트 CPU에서 WORD는 여전히 16비트를 의미하므로,[7] 소프트웨어를 작성할 때와 CPU의 워드 처리 단위는 혼동의 소지가 있다.
4. 1. 인텔 80386
인텔 80386 컴파일러에서 제공되는 워드는 다음과 같다.[5]종류 | 설명 | 범위 |
---|---|---|
Integer word | signed 16비트 데이터 | -32,768 ~ 32,767 |
Unsigned Integer Word | unsigned 16비트 데이터 | 0 ~ 65,535 |
Signed quad word | signed 64비트 (4워드) 데이터 | |
Unsigned Quad Word | unsigned 64비트 데이터 |
4. 2. ARM
ARM(ARM7, ARM9, ARM11)은 32비트 RISC CPU이며, 다음과 같은 데이터 형을 갖는다.[4]- word: 32비트
- halfword: 16비트
- byte: 8비트
4. 3. 비주얼 스튜디오 x86 어셈블리 예제
- `mov ax, WORD PTR [00400010H]`
: 00400010H 번지의 내용을 AX 레지스터로 옮기는 명령어이며, 옮기는 단위는 16비트이다.
- `mov eax, DWORD PTR [00400010H]`
: 00400010H 번지의 내용을 EAX 레지스터로 옮기는 명령어이며, 옮기는 단위는 32비트이다.
5. 다양한 워드 크기
컴퓨터 설계가 더욱 복잡해짐에 따라, 아키텍처에서 단일 워드 크기가 갖는 중요성은 줄어들었다. 더 강력한 하드웨어가 더 다양한 크기의 데이터를 사용할 수 있지만, 시장의 압력은 하위 호환성을 유지하면서 프로세서의 성능을 확장하도록 작용한다. 그 결과, 새로운 설계에서 핵심적인 워드 크기였던 것이 하위 호환 설계에서 기존 워드 크기의 대안으로 공존해야 한다.
1970년대 중반, DEC은 16비트 PDP-11의 32비트 후속 제품으로 VAX를 설계하면서 16비트 크기를 '워드', 32비트 크기를 '롱워드'로 사용했다.[6] 이는 PDP-11에서 사용된 용어와 동일하며, 64비트 알파에서도 이 용어를 계속 사용했다.
x86 계열에서는 세 가지 다른 워드 길이(16비트, 32비트, 64비트)의 프로세서가 출시되었지만, '워드'는 계속해서 16비트를 나타낸다.[7] 소프트웨어가 한 워드 길이에서 다음 워드 길이로 정기적으로 포팅되면서, 일부 API와 설명서에서는 소프트웨어가 컴파일될 수 있는 CPU의 전체 워드 길이보다 오래된(따라서 더 짧은) 워드 길이를 정의하거나 참조한다. 예를 들어, 마이크로소프트의 윈도우 API는 ''WORD''의 프로그래밍 언어 정의를 16비트로 유지한다.[8] 이러한 서로 다른 크기의 워드를 포함하는 데이터 구조는 다음과 같다.
이름 | 크기 (비트) | 크기 (바이트) |
---|---|---|
WORD | 16 | 2 |
DWORD | 32 | 4 |
QWORD | 64 | 8 |
인텔의 x86 어셈블리 언어에서도 유사한 현상이 발생했다.
IBM System/360 계열의 경우, System/360 아키텍처, System/370 아키텍처, System/390 아키텍처에는 8비트 '바이트', 16비트 '하프워드', 32비트 '워드', 64비트 '더블워드'가 있다. 64비트 멤버인 z/Architecture는 16비트 '하프워드', 32비트 '워드', 64비트 '더블워드'를 계속 참조하며, 추가적으로 128비트 '쿼드워드'를 특징으로 한다.
일반적으로 새로운 프로세서는 이전 프로세서와의 이진 코드 호환성을 확보하기 위해 이전 프로세서와 동일한 데이터 워드 길이와 가상 주소 너비를 사용해야 한다.
6. 워드 크기 표
7. 한국의 관점
대한민국에서는 인텔 x86 아키텍처 기반의 컴퓨터 시스템이 널리 보급되어 사용되고 있다. 따라서 '워드'라는 용어는 16비트를 가리키는 것으로 인식되는 경우가 많지만, 실제 사용되는 프로세서의 워드 크기는 32비트 또는 64비트일 수 있다.[6] 특히, 소프트웨어 개발 시에는 운영체제 및 개발 도구(예: 마이크로소프트 비주얼 스튜디오)의 정의에 따라 워드 크기가 다르게 해석될 수 있으므로, 개발자는 이를 명확히 인지하고 있어야 한다.[7][8] 예를 들어, 비주얼 스튜디오에서 x86 어셈블리 코드를 작성할 때, `WORD PTR`은 16비트, `DWORD PTR`은 32비트를 의미한다. 최근에는 64비트 프로세서와 운영체제가 보편화되면서 64비트 워드 크기를 기반으로 하는 프로그래밍이 증가하는 추세이다.
참조
[1]
간행물
Reference Manual 7030 Data Processing System
http://bitsavers.org[...]
IBM
1961-08
[2]
간행물
Intel Itanium Architecture Software Developer's Manual
2022-04-25
[3]
웹사이트
vaxocentrism
http://catb.org/jarg[...]
[4]
간행물
ARM11 MPCore™ Processor Technical Reference Manual
[5]
서적
“Advanced microprocessors and peripherals”
[6]
간행물
INTEL 80386 PROGRAMMER'S REFERENCE MANUAL
1986
[7]
웹사이트
MSDN - WORD
http://msdn.microsof[...]
[8]
웹사이트
MSDN - DWORD
http://msdn.microsof[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com