31비트 컴퓨팅

31-bit computing

컴퓨터 아키텍처에서 31비트 정수, 메모리 주소 또는 기타 데이터 단위는 31비트 폭입니다.

1983년 IBM은 이전 [4][5]모델의 24비트 물리적/가상적 및 과도적 24비트-가상/[1][2][3]26비트 물리적 주소 지정에 대한 업그레이드로 System/370-XA 메인프레임 아키텍처에 31비트 주소 지정을 도입했습니다.이 기능 강화에 의해, 주소 공간을 128배로 늘릴 수 있게 되어, 프로그램에서는 16 MB 이상의 메모리(「라인 [6][1]위」라고 불린다)를 주소 지정할 수 있게 되었습니다.Linux/390에서 COBOL, FORTRAN 및 그 이후의 지원이 포함되었습니다.

1980년대 초에 Motorola 68012가 도입되었습니다.Motorola 68010과 마찬가지로 32비트 데이터와 주소 레지스터를 가지고 있었지만 주소 핀에 주소의 하위 24비트를 제공하는 대신 주소 [7]핀에 비트 30을 제외한 모든 것을 제공했습니다.

31비트 컴퓨터

Librascope LGP-30은 초기 기성 컴퓨터였다.LGP-30은 1956년에 [8]47,000달러의 소매가격으로 처음 제조되었으며 [9]2021년에는 47,000달러에 상당한다.

그것은 4096단어 드럼 메모리를 가진 바이너리 31비트 워드 컴퓨터였다.드럼 워드당 32비트 위치였지만 31비트만 사용돼 32비트 시간대에 '헤드 내 자속 복원'이 가능했다.진공 튜브의 수는 솔리드 스테이트 다이오드 로직, 비트 직렬 아키텍처 및 15개의 플립 플랍 각각을 여러 번 사용함으로써 최소화되었습니다.

LGP-30은 일반적으로 데스크톱 컴퓨터라고 불립니다.타자기 선반을 제외한 높이, 폭 및 깊이는 33x44x26인치(84x112x66cm)였습니다.무게는 약 800파운드(360kg)였으며, 유닛을 쉽게 이동할 수 있는 튼튼한 바퀴 위에 장착되었다.

31비트 어드레싱을 사용하는 IBM 메인프레임

아키텍처

System/360에서는 360/67 아키텍처 초기 System/370 아키텍처 이외의 범용 레지스터는 32비트 폭, 32비트 산술연산, 주소의 격납은 항상 32비트 워드로 이루어지기 때문에 아키텍처는 32비트로 간주되지만 머신은 주소의 상위8비트를 무시하여 24비트 주소 입력이 되었습니다.g. XA 확장자에서는 워드 내의 상위 비트(비트 0)만 주소 지정을 위해 무시되었습니다.예외는 모드 전환 명령에서도 비트0이 사용되었습니다.IBM이 360/67의 32비트 주소 지정을 구현하지 않은 이유는 적어도 두 가지가 있습니다.

  1. 루프 제어 명령 BXHBXLE은 서명된 비교를 실시했습니다.
  2. 기존 소프트웨어의 대부분은 목록 종료 [10]표시기로 비트0 을 사용했습니다.

전이

IBM의 자체 운영 체제 설계자와 개발자를 포함한 어셈블리 언어 프로그래머들은 거의 20년 [11]동안 플래그를 위해 주소 상단에 있는 여분의 바이트를 사용해 왔습니다.IBM은 32비트 주소의 최상위 비트(비트 0)가 켜져 있는 경우 다음 31비트가 가상 주소로 해석된다는 두 가지 형식의 주소 지정을 선택했습니다.최상위 비트가 꺼진 경우 하위 24비트만 (XA 이전 시스템과 마찬가지로) 가상 주소로 취급됩니다.따라서 프로그램은 상위 비트를 끄면 상위 바이트의 하위 비트 7개를 다른 용도로 계속 사용할 수 있습니다.수정이 필요한 프로그램은 주소를 포함하는 단어의 맨 위(왼쪽 끝) 비트를 설정하는 프로그램뿐이었습니다.이는 주소 비교에도 영향을 미칩니다.단어의 왼쪽 끝 비트는 2의 보완 산술에서 부호 비트로 해석되며, 비트 0이 켜져 있을 경우 음수를 나타냅니다.서명된 산술 비교 명령을 사용하는 프로그램은 결과를 반대로 얻을 수 있습니다.2개의 동등한 주소는, 그 중 하나가 부호 비트를 온으로 했을 경우, 나머지 비트가 같더라도, 동일하지 않은 주소로서 비교될 수 있습니다.이 대부분은 COBOL이나 FORTRAN같은[12] 고급 언어를 사용하는 프로그래머들에게 보이지 않았고, IBM은 일정 기간 동안 듀얼 모드 하드웨어로 전환을 지원했습니다.

이 31비트 어드레싱 모드의 특정 머신명령어는 의도적인 부작용으로 어드레싱 모드비트를 변경합니다.예를 들어 원래의 서브루틴 호출 명령 BAL, Branch 및 Link와 그 레지스터에 상당하는 BALR, Branch 및 Link Register는 특정 상태 정보, 명령 길이 코드,[13] 상황 코드 및 프로그램 마스크를 리턴 주소의 상위 바이트에 저장합니다.31비트 리턴 주소를 허용하기 위해 BAS, Branch 및 Save 명령이 추가되었습니다.BAS와 그 레지스터에 상당하는 BASR, Branch 및 Save Register는 System/360 모델 67의 명령어 세트의 일부로서, 24비트보다 긴 주소를 허용하는 유일한 System/360 모델이었다.이러한 명령은 유지되었지만 31비트 주소 지정을 위해 수정 및 확장되었습니다.

24/31-bit의 지원에서 부가적인 설명서도 주소 지정 방식 변화 효과 두개의 새로운 register-register call/return 지침(예를 들어 지점과 저장을 설정 및 모드는 모드 포함 링크 주소와 가지를 주소로 가능성이 있는diffe에서 찍은 사진이다 절약은 한 전화의 BASSM,[14]은 24/31 비트 버전을 포함한다.세내다BSM, 브런치 및 세트모드(복귀의 24/31 비트버전)를 나타냅니다.복귀는 이전에 저장한 링크주소로 직접 이전 모드로 이루어집니다).BASM과 BSM을 조합하면 24비트콜은 31비트로(및 24비트로), 31비트콜은 24비트로(및 31비트로), 24비트콜은 24비트로(및 24비트로) 및 31비트콜은 31비트로(및 31비트로) 가능합니다.

BALR 14,15(콜의 24비트 전용 형식)와 같이 BASM 14,15로서 BASM을 사용하고, 레지스터 14에 링크 주소 및 모드를 보존해, 레지스터 15에 지정된 서브루틴 주소 및 모드로 브랜치를 취득한다.BCR 15,14(무조건 복귀의 24비트 전용 형식)와 다소 유사하게 BSM은 BSM 0,14로서 사용됩니다.여기서 0은 현재 모드가 저장되지 않았음을 나타냅니다(어쨌든 프로그램이 서브루틴을 탈퇴하고 있습니다).또, 레지스터 14 로 지정된 주소 및 모드에 있는 발신자에게의 복귀가 행해집니다.특히 BAS, BASR, BASM 및 BSM의 광범위한 사용 예는 IBM 간행물 MVS/Extended Architecture System Programming Library: 31-Bit Addressing, GC28-1158-1을 참조하십시오.

ESA/370 아키텍처

1990년대에 IBM은 Enterprise System Architecture/370(ESA/370) 아키텍처를 도입하여(나중에 ESA/390 또는 System/390으로 확장됨), 완전한 31비트 가상 주소 지정으로 진화를 완료하고 이 주소 지정 모드 플래그를 유지합니다.이러한 최신 아키텍처에서는 2GB 이상의 물리 메모리를 사용할 수 있으며 최대 2GB의 크기의 여러 주소 공간을 동시에 사용할 수 있습니다.2006년 중반에는 이 31비트 복수 어드레싱 [citation needed]모드에 의해 과도하게 제약되는 프로그램이 너무 많이 있었습니다.

z/아키텍처

IBM은 2000년 최초의 64비트 z/Architecture 시스템인 IBM zSeries Model [1][15]900을 출시하면서 2GB 선형 주소 지정 장벽("막대")을 깼습니다.XA의 이행과는 달리 z/Architecture는 이전 코드를 식별하기 위해 상위 비트를 예약하지 않습니다.z/Architecture는 24비트 및 31비트 코드와의 호환성을 유지합니다.또한 새로운 64비트 코드와 동시에 실행되는 오래된 코드도 마찬가지입니다.

Linux/390

Linux/390은 1999년에 기존의 32비트 데이터/31비트 어드레싱 하드웨어용으로 처음 출시된 이후 z/아키텍처 모드로 컴파일된 초기 메인프레임 Linux 애플리케이션도 31비트 어드레싱으로 제한됩니다.이 제한은 64비트 하드웨어, IBM Z의 64비트 Linux 및 64비트 Linux 응용 프로그램에서 사라졌습니다.64비트 Linux 디스트리뷰션에서는 여전히 32비트 데이터/31비트 주소 지정 프로그램이 실행됩니다.IBM의 31비트 주소 지정은 31비트 코드가 추가 메모리를 사용할 수 있도록 합니다.단, 각 작업 주소 공간에 최대 2GB의 용량이 할당됩니다.31비트 어드레싱을 사용하는 프로세서의 64비트 이외의 Linux의 경우 2GB 바 이상의 메모리를 RAM 디스크로 할당할 수 있습니다.버전 [16]4.1에서는 31비트 Linux 커널(사용자 공간이 아님) 지원이 없어졌습니다.

루비&스몰톡

Ruby & Smalltalk 언어용 인터프리터는 값이 박스화되지 않은 정수인지 아닌지를 판단하기 위해 가장 낮은 비트를 사용합니다.즉, 32비트 머신(또는 32비트 포인터가 있는 16비트 머신)에서는 31비트 정수가 언박스가 됩니다.오버플로우 시 결과는 박스형 객체에 들어갑니다.즉, 할당 및 가비지 수집이 필요합니다.따라서 32비트 값이 31비트 서명 형식에 맞지 않는 경우 이러한 인터프리터에서는 매우 비효율적입니다.64비트 시스템의 63비트 언박스 정수에서도 마찬가지입니다.유사한 설계는 LISP 및 변수가 모든 유형의 값을 취할 수 있는 다른 언어에서도 찾아볼 수 있습니다.경우에 따라서는 태그 부착 아키텍처리스프 머신을 참조해 주세요.

레퍼런스

  1. ^ a b c "A brief history of virtual storage and 64-bit addressability".
  2. ^ "26비트 이행 지원"
  3. ^ KE Plambeck (2002). "Development and attributes of z/Architecture"" (PDF).
  4. ^ Robert T. Fertig (May 1983). "XA: The View From The Trenches (pp.122-136)". Datamation.
  5. ^ Ronald L. Bond (May 1983). "XA: The View From White Plains (pp.139–152)". Datamation.
  6. ^ "...회선 위의 31비트 영역에서 실행되도록 하려면..."Rewriting to run in 31 bit area". Computerworld. October 27, 1986. p. 13.
  7. ^ "4.1 SIGNAL DESCRIPTION" (PDF). MC68010/MC68012 16-/32-Bit Virtual Memory Microprocessors (PDF). Advance Information. Motorola Semiconductor. May 1985. pp. 4-1–4-2. ADI942R2.
  8. ^ "1950-1959 Librazettes". www.librascopememories.com. Librazette: July, 1956 – Royal Precision Plans – LGP-30 Promotion; November, 1956 – LGP-30, Flow Computer Spearhead – Commercial Sales and Production – They're In Production and Paul Coates Will Feature LGP-30 on Dec. TVshows. 1956. Retrieved 2018-03-19.{{cite web}}: CS1 유지보수: 기타 (링크)
  9. ^ 1634–1699:McCusker, J.J.(1997년).얼마나 리얼 머니에 그렇죠?역사적 가격 지수를 사용하여 경제 미국의 안의 돈 가치에 관한 Deflator로:.부칙 et Corrigenda(PDF).미국 골동품 협회입니다.1700–1799:McCusker, J.J.(1992년).얼마나 리얼 머니에 그렇죠?역사적 가격 지수 이용 돈은 가치관의 경제 미국(PDF)의 Deflator로.미국 골동품 협회입니다.1800–present:연방 준비 은행이 미니애 폴리스의."소비자 물가 지수(추정)1800–".4월 16일 2022년 Retrieved.
  10. ^ "... 목록의 끝을 나타내려면 마지막 풀워드의 상위 비트를 1로 설정해야 합니다."
  11. ^ 실제로 주소의 가변 길이 파라미터 리스트에서 마지막 주소 엔트리의 최상위 비트는 전통적으로 1로 설정되어 있었지만 다른 주소 엔트리는 최상위 비트를 0으로 설정해야 했습니다.
  12. ^ "VS Cobol II compiles Cobol programs in 31-bit". 1988-02-08.
  13. ^ 명령 길이 코드는 BALR의 경우 00b이고 BAL의 경우 01b이므로 XA 이후의 시스템에서 BALR 및 BAL의 경우 상위 비트는 항상 0으로 설정되므로 24비트 모드를 나타냅니다.
  14. ^ "BASSM(브런치 및 저장 및 설정 모드)"
  15. ^ "사용자 개인 영역의 2자리 주소를 바라고 합니다."
  16. ^ "4.1 Merge window, part 1". LWN. April 15, 2015.