IBM 1401
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
IBM 1401은 1959년에 출시된 IBM의 전자 메인프레임 컴퓨터로, 대량 생산과 인기로 인해 여러 국가에 도입되었다. 한국에서는 1967년 경제기획원에 도입되어 한국 최초의 메인프레임 컴퓨터로 기록되었으며, 경제 개발과 통계 처리에 기여했다. 1401은 1960년대 중반에 1만 대 이상 설치되어 당시 세계 컴퓨터 시스템의 절반을 차지했으며, 1971년까지 판매되었다. 1401은 6비트 문자를 사용하며, 다양한 소프트웨어와 어셈블러를 지원했다. 이 컴퓨터는 단순하면서도 안정적이었으며, 1970년대에는 인도와 파키스탄에서도 널리 사용되었다.
더 읽어볼만한 페이지
- 10진법 컴퓨터 - 에니악
에니악(ENIAC)은 제2차 세계 대전 중 미국 육군의 탄도 계산을 위해 개발된 세계 최초의 범용 전자 디지털 컴퓨터로, 존 모클리와 J. 프레스퍼 에커트가 설계하고 18,000개의 진공관을 사용했으며, 1946년 공개 당시 "거대한 두뇌"라는 별칭으로 불리며 컴퓨터 개발에 큰 영향을 미쳤다. - 10진법 컴퓨터 - IBM 1620
IBM 1620은 1959년에 발표된 중소형 컴퓨터로, 자기 코어 메모리와 서브루틴을 활용하여 하드웨어 복잡성을 줄였으며, 과학 및 엔지니어링 분야에서 널리 사용되었다. - 메인프레임 - 옐브루스
옐브루스는 러시아 MCST에서 설계 및 제조한 마이크로프로세서 시리즈로, 메인프레임 컴퓨터에서 시작하여 VLIW 아키텍처를 거쳐 SPARC 아키텍처 기반 프로세서까지 다양한 모델이 출시되었다. - 메인프레임 - 입출력 채널
입출력 채널은 CPU 부담을 줄이고 시스템 성능을 향상시키기 위해 I/O 작업을 전담하는 프로그래밍 가능한 하드웨어 장치로서, 메인프레임 시스템에서 CPU와 독립적으로 I/O 작업을 처리하며 채널 프로그램과 CCW를 사용하여 제어하고 데이터 전송 속도와 유연성을 향상시켜왔다. - IBM 트랜지스터 컴퓨터 - IBM 700/7000 시리즈
IBM 700/7000 시리즈는 1950년대부터 1960년대에 IBM이 개발한 메인프레임 컴퓨터 시리즈로, 과학 기술 계산, 상업용, 10진법 연산, 슈퍼컴퓨터 등 다양한 목적에 맞춰 설계된 6가지 주요 아키텍처로 구성되었으며, 진공관 또는 트랜지스터를 사용하고 동일한 전자 기술과 주변 기기를 공유하며 IBM System/360 개발에 영향을 주었다. - IBM 트랜지스터 컴퓨터 - IBM 7090
| IBM 1401 | |
|---|---|
| IBM 1401 | |
![]() | |
| 설계자 | IBM |
| 비트 | 6비트 플러스 워드 마크 및 패리티 |
| 출시 | 1959년 |
| 설계 | CISC |
| 유형 | 메모리-메모리 |
| 인코딩 | 가변 |
| 분기 | 수정자 문자가 있는 분기 명령어 |
| 엔디언 | 빅 |
| 레지스터 | 3개의 인덱스, 메모리 내, 선택 사항 |
| 설명 | 1960년대 십진법 컴퓨터 |
| 특징 | |
| 용도 | 독립형 사용 및 대형 컴퓨터 주변 장치 서비스 |
| 최소 구성 비용 | 월 2500달러 미만 |
| 성능 비교 | IBM 407 회계기 3대와 IBM 604 계산기 조합보다 성능이 훨씬 뛰어남 |
| 한국 컴퓨터 역사 | |
| 역사적 의의 | 한국 초기 컴퓨터 도입 역사에 중요한 위치 차지 (서현진, (처음 쓰는) 한국 컴퓨터사, 1997, 15-20쪽) |
2. 역사
1401 프로젝트는 불 감마 3(Bull Gamma 3)의 성공에 대응하여 "세계적인 회계 기계"(WWAM)라는 IBM 프로젝트에서 발전하였다.[3] 1401은 독립적인 시스템, IBM 펀치 카드 장비와 함께, 또는 IBM 700 또는 7000 시리즈의 보조 장비로 사용되었다.[4]
1401 구성의 월 임대료는 2,500달러(오늘날 약 2500USD 달러에 해당)부터 시작되었다.[5] IBM은 첫 5주 만에 5,200건의 주문을 받아 예상을 뛰어넘는 수요를 기록했다.[6] 1961년 말까지 미국에 설치된 2,000대의 기계는 모든 제조업체의 모든 전자 프로그램 내장 방식 컴퓨터의 약 4분의 1이었다. 설치된 1401의 수는 1960년대 중반 10,000대를 넘어섰으며, 1960년대 중반까지 전 세계 컴퓨터 시스템의 거의 절반이 1401 유형 시스템이었다.[6] 이 시스템은 1971년 2월까지 판매되었다.[7]
1401은 주로 소규모 기업에서 기본 데이터 처리 기계로 사용되었으며, 메인프레임 컴퓨터의 오프라인 주변 장치 제어기로도 자주 사용되었다. 예를 들어, IBM 7090이 있는 설치에서 메인프레임 컴퓨터는 입출력에 자기 테이프만 사용했고, 1401은 1402 카드 판독기-펀치와 같은 느린 주변 장치에서 테이프로 입력 데이터를 전송하고, 테이프에서 카드 펀치, 1403 프린터 또는 기타 주변 장치로 출력 데이터를 전송했다. 이를 통해 메인프레임의 처리량이 카드 판독기나 프린터의 속도에 제한되지 않았다.
IBM 내에서는 존 하안스트라(John Haanstra)와 같은 임원들이 더 큰 모델(예: IBM 1410)에서 1401 사용을 계속 지지했지만, 1964년 최고 경영진의 시스템/360(System/360)에 자원을 집중하기로 한 결정으로 이러한 노력은 갑작스럽게 종료되었다. IBM은 하니웰 200(Honeywell 200)[8][9]의 경쟁 위협과 360의 1401 설계와의 비호환성에 직면하여, 마이크로코드 에뮬레이션을 ROM 형태로 사용하여 일부 System/360 모델이 1401 프로그램을 실행할 수 있도록 했다.[10]
캘리포니아주 마운틴 뷰(Mountain View, California)의 컴퓨터 역사 박물관(Computer History Museum)에는 두 대의 1401 시스템이 작동 상태로 복원되어 있다.[14][15]
2. 1. 한국 및 기타 국가에 도입
IBM 1401은 그 인기와 대량 생산으로 인해 여러 국가에 도입된 최초의 전자 메인프레임 컴퓨터로 간주되는 경우가 많았다. 1967년 대한민국 경제 기획원에 도입되었으며[12][13], 1970년대에는 인도와 파키스탄에 많이 설치되어 1980년대까지 사용되었다.싱가포르에서는 1963년에 중앙 공적 자금 위원회에 도입되었다.[11]
3. 아키텍처
1401은 각 영숫자를 6비트로 표현하며, 'B, A, 8, 4, 2, 1'로 표기한다. 'B, A'는 IBM 80열 펀치 카드에서 온 '존(zone)' 비트, '8, 4, 2, 1'은 '숫자(numeric)' 비트이다.
- 1부터 9까지는 'B, A' 비트가 0이고, '8, 4, 2, 1' 비트에 BCD로 인코딩된다. 0은 '8, 2'로 인코딩된다.
- 영문자는 IBM 80열 펀치 카드 문자 코드의 존과 숫자 펀치에서 파생된다. '12'는 'B, A', '11'은 'B', '0'은 'A'이며, '8, 4, 2, 1' 비트 설정은 1부터 9까지 펀치의 BCD 인코딩에서 온다. 펀치 카드 문자 코드 '12, 1'인 문자 A는 'B, A, 1'로 인코딩된다.
- 그 외 문자 인코딩은 문자 및 연산 코드 표를 참조.
IBM은 1401 문자 코드를 BCD라 칭했지만, 이는 10진수 숫자 인코딩만 설명한다.[16] 1401 영숫자 정렬 순서는 펀치 카드 정렬 순서와 호환된다.
각 메모리 위치에는 'C'(홀수 패리티 검사용)와 'M'(워드 마크용) 비트가 추가된다. 'M'은 메모리에만 있고, 특수 명령어로 설정한다. 메모리 인쇄 시 문자에 밑줄을 그어 표시한다. 'C'는 자동 계산된다.
메모리 위치에는 다음 비트가 있다.
'C B A 8 4 2 1 M'
1401은 1,400, 2,000, 4,000, 8,000, 12,000, 16,000자 메모리 구성이 있었다. 각 문자는 주소 지정이 가능하며, 주소는 0부터 15999까지이다. 일부 1401은 특별 요청으로 32,000자로 확장되었다.[17]
일부 연산은 특정 메모리 위치를 사용한다(예약은 아님). '카드 읽기'는 카드 80열 데이터를 메모리 위치 001~080에 저장한다. 인덱스 레지스터 1, 2, 3은 각각 메모리 위치 087~089, 092~094, 097~099에 있다. '카드 펀칭'은 메모리 위치 101~180 내용을 카드에 펀칭한다. '라인 쓰기'는 메모리 위치 201~332 내용을 인쇄한다.
1401 명령어 형식은 다음과 같다.
연산 코드
[A 주소 또는 I 주소 또는 장치 주소 [B 주소]] [수식어]
워드 마크
연산 코드는 한 문자이다. 메모리 주소('I'는 분기 대상, 'A'와 'B'는 데이터)와 장치 주소는 세 문자이다. 연산 코드 수식어는 한 문자이다. 명령어 길이는 1, 2, 4, 5, 7, 8자이다. 대부분 명령어는 워드 마크가 필요하다(주로 다음 명령어 연산 코드 워드 마크로 충족).
세 문자 메모리 주소는 5자리 메모리 주소 인코딩이다. 5자리 주소 하위 3자리(000~999)는 세 문자 숫자 비트로 지정된다. 상위 문자 존 비트는 증분을 지정한다. 'A'는 1000, 'B'는 2000, 'B'와 'A'는 3000으로 4,000개 메모리 위치를 주소 지정한다. 하위 문자 존 비트는 IBM 1406 저장 장치로 16,000개 메모리 위치 주소 지정을 위해 4000, 8000, 12000 증분을 지정한다. 세 문자 주소 "I99"는 메모리 위치 3999(3000 + 999)를 참조한다.
세 문자 메모리 주소 중간 문자 존 비트는 선택 기능인 세 인덱스 레지스터 중 하나를 지정한다.
A, B 주소 참조 피연산자는 단일 메모리 위치, 가변 길이 필드, 가변 길이 레코드일 수 있다. 가변 길이 필드는 하위(높은 주소) 위치에서 주소 지정, 길이 상위(낮은 주소) 위치 워드 마크로 정의된다. 덧셈 같은 연산 시 프로세서는 두 필드 하위 위치에서 시작, 상위 위치로 이동한다.
필드 길이 유일 제한은 사용 가능 메모리이다. 가변 길이 필드 적용 명령어는 '덧셈', '뺄셈', '곱셈', '나눗셈', '비교', 'A 또는 B 워드 마크로 문자 이동', '문자 이동 및 편집'이다. 인접 가변 길이 필드는 가변 길이 레코드를 구성한다. 가변 길이 레코드는 상위 위치 주소 지정, 길이 하위 위치 워드 마크 그룹 마크 문자, 레코드 마크 문자로 정의된다. '문자 레코드 또는 그룹 마크 이동' 명령어로 레코드 블록을 조립한다. 자기 테이프 기록 가변 길이 레코드, 레코드 블록은 상위 위치 주소 지정, 길이 하위 위치 다음 워드 마크 그룹 마크 문자로 정의된다.
인접 필드 연산은 이전 연산 주소 레지스터 주소 사용 "체인"이 가능하다. 예로, 인접 데이터 필드 덧셈은
A 700,850, A 695,845, A 690,840으로 코딩 가능하다. 체이닝으로 두 번째, 세 번째 명령어 데이터 주소 생략, A 700,850, A, A로 코딩한다.[18]3. 1. IBM 1401G
IBM 1401G는 여섯 가지 모델(G1 및 G11: 1,400 저장 위치; G2 및 G12: 2,000 저장 위치; G3 및 G13: 4,000 저장 위치)로 판매되었다.[19] 1401과 1401G의 차이점 중 하나는 판독기-천공기의 제어 방식이다.[20]4. 부팅 및 샘플 프로그램
IBM 1402 카드 판독기-펀치의 '''LOAD''' 버튼을 누르면 카드의 내용이 메모리 위치 001-080에 읽히고, 위치 001에는 실행 가능한 명령어임을 나타내는 단어 마크가 설정되며, 위치 002-080의 단어 마크(있는 경우)는 지워지고, 위치 001의 명령어부터 실행이 시작된다.[21] 이는 항상 dyadic영어 '단어 마크 설정'(Set Word Mark)으로, 다음 두 단어(명령어)에 단어 마크를 설정한다.[21] 단일 '단어 마크 설정' 명령어는 두 개의 단어 마크를 설정할 수 있지만, 자체적으로 단어 마크가 설정되어 있어야 하므로, 이러한 명령어의 시퀀스가 필요하며, 이는 프로그램의 코드 또는 데이터에 단어 마크를 점진적으로 설정하고 후속 '단어 마크 설정' 명령어에 대한 단어 마크를 설정한다.[21] 카드의 명령어 실행은 단어 마크 설정, 프로그램 메모리 로드, 그리고 프로그램 시작 주소로 분기하는 과정을 계속한다.[21] 후속 카드를 읽으려면, 새로운 카드의 내용을 위치 001-080에 가져오기 위해 매 카드의 마지막 명령어로 명시적인 '읽기'(Read) 명령어(opcode `1`)를 실행해야 한다.[21] '읽기' 명령어가 실행될 때 단어 마크가 '''지워지지 않는다'''는 점에 유의해야 한다.[21] 다음에 읽어들일 카드를 위해 그대로 유지된다.[21] 이는 편리한데, 처음 몇 개의 카드가 하는 일의 상당 부분이 적절한 위치에 단어 마크를 설정하는 것이기 때문이다.[21] 처음 6개 정도의 단어 마크가 설정되어 있으면 프로그래머는 해당 단어 마크를 다시 설정할 필요가 없다.[21]
다양한 작업을 위해 한 장짜리 프로그램을 작성할 수 있다.[21] 일반적으로 사용 가능한 것은 다음 카드 덱을 인쇄하는 한 장짜리 프로그램과 카드 펀치에 덱을 복제하는 또 다른 프로그램이다.[21]
다음은 "HELLO, WORLD!"를 인쇄하는 한 장짜리 프로그램이다. 위의 LOAD를 누르면 카드 하나가 읽히고 001(첫 번째 ,)에서 실행이 시작된다. 프로그램은 첫 번째 ,에 이미 단어 마크가 있다고 가정하고 자동으로 자체 단어 마크를 설정한다.
:,036008,040015,044022,051029,052053/299/332L0652132.HELLO, WORLD!
기존 IBM 표기법에 따라 밑줄은 프로그램이 실행된 후 메모리에 단어 마크가 설정된 위치를 나타낸다. 펀치 카드에서는 시각적으로 표시되지 않거나 펀치된 데이터에 존재하지 않는다.
프로그램은 다음과 같다.
- ''단어 마크 설정''(Set Word Mark)(opcode `,`, 피연산자 036 008). 이것은 항상 첫 번째 명령어여야 하며, 피연산자 중 하나는 항상 008이어야 한다. 그렇지 않으면 다음 명령어에 실행 가능한 명령어임을 나타내는 단어 마크가 없을 것이다.
- 추가 ''단어 마크 설정''. 밑줄은 모든 `,` opcode를 완료한 후 단어 마크가 있는 위치를 보여준다. 프로그램의 "핵심"에는 036부터의 단어 마크만 필요하다. 029까지의 단어 마크는 ''단어 마크 설정'' 명령어에만 필요하다. 프로그램의 핵심에는 6개의 단어 마크가 필요하므로 총 5개의 ''단어 마크 설정'' 명령어가 필요하다. 하나 적게 필요한 이유는 마지막 ''단어 마크 설정''이 다른 ''단어 마크 설정''에 피연산자를 낭비할 필요가 없기 때문이다.
- ''저장소 지우기'' - 나머지 인쇄 영역 299-200(opcode `/`, 피연산자 299)
- ''저장소 지우기'' - 인쇄 영역의 일부 332-300(opcode `/`, 피연산자 332)
- ''이동''
HELLO, WORLD!를 인쇄 영역으로 이동(opcode `L`, 피연산자 065 및 213). ''이동''은 위치 052의 단어 마크 때문에 중지된다(이것은 또한 ''중지'' 및 분기 명령어의 끝을 정의하는 이중 역할을 한다). - 프린터에 ''줄 쓰기''(opcode `2`; "HELLO, WORLD!"는 왼쪽에서 13번째 프린터 위치에 인쇄된다)
- ''중지''(opcode `.`)
5. 하드웨어 구현
IBM 1401의 논리 회로는 대부분 다이오드-트랜지스터 논리(DTL)의 일종인 CTDL(Complemented Transistor Diode Logic)로 구성되었다. 이 외에도 Alloy(주로 비논리 기능에 사용, 게르마늄 합금 트랜지스터 사용), CTRL(저항-트랜지스터 논리(RTL)의 일종) 등의 회로가 사용되었다. TAU-9 테이프 인터페이스와 같은 후기 업그레이드에서는 더 빠른 속도를 위해 "드리프트" 트랜지스터(1953년 허버트 크뢰머가 발명)를 사용한 SDTDL(Saturated Drift Transistor Diode Logic)이라는 DTL을 사용했다. 이러한 회로의 일반적인 논리 레벨은 (S&U 레벨) 고: 0 V ~ -0.5V, 저: -6 V ~ -12 V, (T 레벨) 고: 6 V ~ 1 V, 저: -5.5 V ~ -6 V였다.
이러한 회로는 16핀 금도금 에지 커넥터(단일 너비) 또는 두 개의 16핀 금도금 에지 커넥터(이중 너비)를 가진 단면 종이-에폭시 인쇄 회로 기판에 개별 부품(저항, 커패시터, 트랜지스터)으로 구성되었다. IBM은 이를 SMS 카드라고 불렀다. 하나의 카드에 있는 논리 양은 7400 시리즈 SSI 또는 MSI 패키지와 비슷했다. (예: 단일 너비 카드의 경우 3~5개의 논리 게이트 또는 몇 개의 플립플롭, 이중 너비 카드의 경우 약 20개의 논리 게이트 또는 4개의 플립플롭)
SMS 카드는 IBM이 ''게이트''라고 부르는 경첩식 스윙 아웃 랙의 소켓에 삽입되었다.
1401은 자기 코어 메모리를 사용했다. 코어 지름은 약 1mm이며 4선 배열(x, y, 감지, 저지)을 사용했다. 메모리는 각 코어가 1비트를 저장하는 4000개의 코어 평면으로 구성되었다. 이러한 평면 8개의 스택은 4000개의 메모리 위치에 대한 6개의 데이터 비트, 워드 마크 비트 및 패리티 비트를 저장한다. 추가 저장 기능을 위한 더 적은 수의 코어가 있는 8개의 추가 평면과 함께 이것은 4000자 메모리 모듈을 구성한다.[22] 이러한 모듈 하나는 1401의 기본 인클로저 내에 수납되었다. 시스템은 일반적으로 이러한 모듈 두 개, 세 개 또는 네 개로 제공되었다. 추가 모듈은 약 2피트 정사각형이고 3피트 높이의 추가 상자인 1406 코어 메모리 유닛에 포함되어 있었다.
메모리의 피연산자는 한 번에 하나의 메모리 위치씩 순차적으로 액세스되며, 1401은 기본 사이클 시간 11.5마이크로초 내에 하나의 메모리 위치를 읽거나 쓸 수 있다.[23] 모든 명령어 타이밍은 이 사이클 시간의 배수로 표시된다.[24]
5. 1. IBM 1403 프린터


IBM 1403 프린터는 1959년 10월 IBM 1401 데이터 처리 시스템과 함께 출시되었다. 이 프린터는 완전히 새롭게 개발되었다.
6. 소프트웨어
- 1401 기호 프로그래밍 시스템 (SPS)은 간단한 어셈블러였다. SPS-1은 1.4KB 메모리 머신에서도 작동 가능했으며, SPS-2는 4KB 이상의 메모리가 필요했다.[47]
- 오토코더(Autocoder)는 더욱 고급 어셈블러로, 최소 4KB 메모리와 테이프 드라이브 4개가 필요했다. 디스크 기반 오토코더는 테이프 기반 오토코더와 유사했지만 호환되지 않았으며, 최소 1311 디스크 드라이브 1개가 필요했다.
- 코볼(COBOL): 최소 4KB 메모리와 테이프 드라이브 4개가 필요했다.
- FARGO (Fourteen-o-one Automatic Report Generation Operation)는 RPG의 전신으로, 최소 4KB 메모리가 필요했다.
- FORTRAN II: 최소 8KB 메모리가 필요했다. 1401 포트란 컴파일러는 작은 메모리용 코드를 생성하기 위해 선구적인 형태의 해석형 "p-코드"를 사용했다.[47]
- FORTRAN IV: 최소 12KB 메모리와 테이프 드라이브 4개 또는 최소 하나의 IBM 1311 디스크 드라이브가 필요했다.
- RPG (Report Program Generator): 기본 RPG는 최소 4KB 메모리가 필요했다.
B 명령어는 조건에 따라 분기하는 기능을 제공했다. 아래 표는 B 명령어의 조건 코드와 의미를 나타낸다.
| BCD 문자 | 장치 | 의미 |
|---|---|---|
| 공백 | 1401 | 무조건 – 다음 문자에 워드 마크가 필요하지 않음 |
| / | 1401 | 불일치 비교 |
| S | 1401 | 일치 비교 |
| T | 1401 | 낮은 비교 |
| U | 1401 | 높은 비교 |
| Z | 1401 | 산술 오버플로우 |
| ( 또는 % | 1401 | 프로세스 확인 스위치 꺼짐으로 프로세스 확인 |
| B | 1401 | SS B |
| C | 1401 | SS C |
| D | 1401 | SS D |
| E | 1401 | SS E |
| F | 1401 | SS F |
| G | 1401 | SS G |
이 외에도 다양한 장치와 조건에 대한 분기 코드가 존재했다. IBM 1401 소프트웨어 목록은 IBM 1400 시리즈 참조.
7. 문자 및 연산 코드
1401에서 각 영숫자는 'B, A, 8, 4, 2, 1'이라고 불리는 6개의 비트로 인코딩된다. 'B, A' 비트는 IBM 80열 펀치 카드에서 유래한 용어로 '존(zone)' 비트라고 하며, '8, 4, 2, 1' 비트는 '숫자(numeric)' 비트라고 한다.
- 숫자 1부터 9까지는 'B, A' 비트가 0이고, 숫자는 '8, 4, 2, 1' 비트에 BCD로 인코딩된다. 숫자 0은 '8, 2'로 인코딩된다.
- 영문자의 경우 비트 설정은 IBM 80열 펀치 카드 문자 코드의 존과 숫자 펀치에서 파생된다. '12'에서 'B, A', '11'에서 'B', '0'에서 'A'이며, '8, 4, 2, 1' 비트의 설정은 1부터 9까지의 펀치에 대한 BCD 인코딩에서 나온다. 따라서 펀치 카드 문자 코드에서 '12, 1'인 문자 A는 'B, A, 1'로 인코딩된다.
- 두 개 이상의 숫자 펀치가 있는 펀치 카드 문자의 인코딩은 아래의 문자 및 연산 코드 표에서 확인할 수 있다.
IBM은 1401의 문자 코드를 BCD("2진 부호화 10진수")라고 불렀지만, 이 용어는 10진수 숫자 인코딩만을 설명한다.[16] 1401의 영숫자 정렬 순서는 펀치 카드 정렬 순서와 호환된다.
각 메모리 위치에는 'C'(홀수 패리티 검사용)와 'M'(워드 마크용)이라고 하는 두 개의 다른 비트가 연결되어 있다. 'M'은 메모리에는 있지만 펀치 카드에는 없으며, 특수 기계 명령어를 사용하여 설정해야 한다. 메모리를 인쇄할 때 일반적으로 문자에 밑줄을 그어 표시된다. 'C'는 자동으로 계산되며 펀치 카드에도 없다.
따라서 각 메모리 위치에는 다음과 같은 비트가 있다.
'C B A 8 4 2 1 M'
1401은 1,400, 2,000, 4,000, 8,000, 12,000 또는 16,000자의 6가지 메모리 구성으로 제공되었다. 각 문자는 주소 지정이 가능하며, 주소는 0부터 15999까지이다. 매우 소수의 1401은 특별 요청에 따라 32,000자로 확장되었다.[17]
일부 연산은 특정 메모리 위치를 사용한다(해당 위치는 예약되어 있지 않으며 다른 용도로 사용할 수 있다). '카드 읽기'는 카드의 80열 데이터를 메모리 위치 001~080에 저장한다. 인덱스 레지스터 1, 2, 3은 각각 메모리 위치 087~089, 092~094, 097~099에 있다. '카드 펀칭'은 메모리 위치 101~180의 내용을 카드에 펀칭한다. '라인 쓰기'는 메모리 위치 201~332의 내용을 인쇄한다.
1401의 명령어 형식은 다음과 같다.
연산 코드
[A 주소 또는 I 주소 또는 장치 주소 [B 주소]] [수식어]
워드 마크
연산 코드는 한 문자이다. 메모리 주소("I"는 분기 대상, "A"와 "B"는 데이터)와 장치 주소는 세 문자이다. 연산 코드 수식어는 한 문자이다. 따라서 명령어 길이는 1, 2, 4, 5, 7 또는 8자이다. 대부분의 명령어는 워드 마크를 따라야 한다(일반적으로 다음 명령어의 연산 코드가 있는 워드 마크로 충족되는 요구 사항).
명령어의 세 문자 메모리 주소는 5자리 메모리 주소의 인코딩이다. 5자리 주소의 하위 3자리(000~999)는 세 문자의 숫자 비트로 지정된다. 상위 문자의 존 비트는 다음과 같이 증분을 지정한다. 'A' 1000, 'B' 2000, 'B'와 'A' 함께 3000으로 4,000개의 메모리 위치를 주소 지정할 수 있다. 하위 문자의 존 비트는 IBM 1406 저장 장치를 사용하여 16,000개의 메모리 위치를 주소 지정하기 위해 4000, 8000 또는 12000의 증분을 지정한다. 예를 들어, 세 문자 주소 "I99"는 메모리 위치 3000 + 999 또는 3999를 참조한다.
세 문자 메모리 주소의 중간 문자의 존 비트는 여러 가지 선택적 기능 중 하나인 세 개의 인덱스 레지스터 중 하나를 지정할 수 있다.
A 주소와 B 주소로 참조되는 피연산자는 단일 메모리 위치, 가변 길이 필드 또는 가변 길이 레코드일 수 있다. 가변 길이 필드는 하위(가장 높은 주소) 위치에서 주소 지정되며, 길이는 상위(가장 낮은 주소) 위치에 설정된 워드 마크로 정의된다. 덧셈과 같은 연산이 수행될 때 프로세서는 두 필드의 하위 위치에서 시작하여 상위 위치로 이동하며, 마치 연필과 종이로 덧셈을 하는 사람처럼 작동한다.
이러한 필드의 길이에 대한 유일한 제한은 사용 가능한 메모리이다. 가변 길이 필드에 적용 가능한 명령어는 '덧셈', '뺄셈', '곱셈', '나눗셈', '비교', 'A 또는 B 워드 마크로 문자 이동', '문자 이동 및 편집'이다. 하나 이상의 인접한 가변 길이 필드는 가변 길이 레코드를 구성할 수 있다. 가변 길이 레코드는 상위 위치에서 주소 지정되며, 길이는 하위 위치에 워드 마크가 있는 그룹 마크 문자 또는 레코드 마크 문자로 정의된다. '문자 레코드 또는 그룹 마크 이동' 명령어를 사용하여 레코드 블록을 조립할 수 있다. 자기 테이프에 쓰려는 가변 길이 레코드 또는 레코드 블록은 상위 위치에서 주소 지정되며, 길이는 하위 위치 바로 다음에 워드 마크가 있는 그룹 마크 문자로 정의된다.
인접 필드에 대한 일련의 연산은 이전 연산의 주소 레지스터에 남아 있는 주소를 사용하여 "체인"할 수 있다. 예를 들어, 인접한 데이터 필드의 덧셈은
A 700,850, A 695,845, A 690,840으로 코딩될 수 있다. 체이닝을 사용하면 두 번째 및 세 번째 명령어에서 데이터 주소를 생략하여 A 700,850, A, A로 코딩할 수 있다.[18]IBM 1401의 연산 코드는 단일 문자이다. 특히 더 일반적인 명령어의 경우 선택된 문자는 연산에 대한 니모닉이다. 예를 들어 A는 덧셈, B는 분기, S는 뺄셈 등을 나타낸다.
'''문자 및 연산 코드 표'''
| BCD 문자 | 프린터-A | 프린터-H | 카드 | BCD | 연산 | 정의 및 참고 사항 |
|---|---|---|---|---|---|---|
| 공백 | C | |||||
| . | . | . | 12-3-8 | BA8 21 | 정지 | |
| ⌑ | ⌑ | ) | 12-4-8 | CBA84 | 단어 마크 지우기 | 마름모 |
| 12-5-8 | BA84 1 | |||||
| < | 12-6-8 | BA842 | 미만 | |||
| 12-7-8 | CBA8421 | 그룹 마크 | ||||
| & | & | + | 12 | CBA | ||
| $ | $ | $ | 11-3-8 | CB 8 21 | ||
| * | * | * | 11-4-8 | B 84 | ||
| 11-5-8 | CB 84 1 | |||||
| ; | 11-6-8 | CB 842 | ||||
| Δ | 11-7-8 | B 8421 | 델타 (모드 변경) | |||
| - | - | - | 11 | B | ||
| / | / | / | 0-1 | C A 1 | 저장소 지우기 | |
| , | , | , | 0-3-8 | C A8 21 | 단어 마크 설정 | |
| % | % | ( | 0-4-8 | A84 | 나누기 | 선택적 특수 기능. |
| ˠ | 0-5-8 | C A84 1 | 단어 구분 기호 | |||
| \ | 0-6-8 | C A842 | 왼쪽 경사선 | |||
| ⧻ | 0-7-8 | A8421 | 테이프 세그먼트 마크 | |||
| ƀ | ‡ | ‡ | N/A | A | 무료 견적 요청 없이는 카드에서 읽을 수 없습니다. 이 경우 8–2로 읽힙니다. 0(또는 RPQ를 사용하는 경우 8–2)로 펀치합니다. | |
| # | # | = | 3-8 | 8 21 | 주소 수정 | 선택 사항(4000자 이상의 메모리가 필요함) |
| @ | @ | ' | 4-8 | C 84 | 곱셈 | 선택적 특수 기능. |
| : | 5-8 | 84 1 | ||||
| > | 6-8 | 842 | 초과 | |||
| √ | 7-8 | C 8421 | 테이프 마크 | |||
| ? | & | & | 12-0 | CBA8 2 | 0 더하기 | 플러스 제로 |
| A | A | A | 12-1 | BA 1 | 더하기 | |
| B | B | B | 12-2 | BA 2 | 분기 또는 표시기에 따른 분기 | "5자리 분기 표시기(B) 명령어에 대한 수정자" 섹션 참조 |
| C | C | C | 12-3 | CBA 21 | 비교 | |
| D | D | D | 12-4 | BA 4 | 숫자 이동 | (비트) |
| E | E | E | 12-5 | CBA 4 1 | 문자 이동 및 편집 | |
| F | F | F | 12-6 | CBA 42 | 캐리지 제어 | (프린터) |
| G | G | G | 12-7 | BA 421 | ||
| H | H | H | 12-8 | BA8 | B-주소 레지스터 저장 | 선택적 특수 기능. |
| I | I | I | 12-9 | CBA8 1 | ||
| ! | - | - | 11-0 | B 8 2 | 0 빼기 | 마이너스 제로 |
| J | J | J | 11-1 | CB 1 | ||
| K | K | K | 11-2 | CB 2 | 스태커 및 기타 장치 제어 선택 | "스태커 선택(K) 명령어에 대한 수정자" 섹션 참조 |
| L | L | L | 11-3 | B 21 | 단어 마크로 문자 로드 | |
| M | M | M | 11-4 | CB 4 | 단어 마크로 문자 이동 | |
| N | N | N | 11-5 | B 4 1 | 무연산 | |
| O | O | O | 11-6 | B 42 | ||
| P | P | P | 11-7 | CB 421 | 레코드 또는 그룹 마크로 문자 이동 | 선택적 특수 기능. |
| Q | Q | Q | 11-8 | CB 8 | A-주소 레지스터 저장 | 선택적 특수 기능. |
| R | R | R | 11-9 | B 8 1 | ||
| ‡ | ‡ | ‡ | 0-2-8 | A8 2 | 레코드 마크 | |
| S | S | S | 0-2 | C A 2 | 빼기 | |
| T | T | T | 0-3 | A 21 | 변환 | (1460 전용) |
| U | U | U | 0-4 | C A 4 | 제어 장치 | (테이프) |
| V | V | V | 0-5 | A 4 1 | 단어 마크 및/또는 영역이 있는 경우 분기 | |
| W | W | W | 0-6 | A 42 | 비트가 같은 경우 분기 | 선택적 특수 기능. |
| X | X | X | 0-7 | C A 421 | 이동 및 0 삽입 | 선택적 특수 기능. |
| Y | Y | Y | 0-8 | C A8 | 영역 이동 | (비트) |
| Z | Z | Z | 0-9 | A8 1 | 문자 이동 및 0 억제 | |
| 0 | 0 | 0 | 0 | C 8 2 | ||
| 1 | 1 | 1 | 1 | 1 | 카드 읽기 | |
| 2 | 2 | 2 | 2 | 2 | 라인 쓰기 | |
| 3 | 3 | 3 | 3 | C 21 | 쓰기 및 읽기 | |
| 4 | 4 | 4 | 4 | 4 | 카드 펀칭 | |
| 5 | 5 | 5 | 5 | C 4 1 | 읽기 및 펀칭 | |
| 6 | 6 | 6 | 6 | C 42 | 쓰기 및 펀칭 | |
| 7 | 7 | 7 | 7 | 421 | 쓰기, 읽기 및 펀칭 | |
| 8 | 8 | 8 | 8 | 8 | 읽기 공급 시작 | 선택적 특수 기능. |
| 9 | 9 | 9 | 9 | C 8 1 | 펀칭 공급 시작 | 선택적 특수 기능. |
연산 목록은 위의 문자 및 연산 코드 표를 참조한다.
두 가지 명령어인 분기 표시기(B)와 스태커 선택(K)은 "수정자" 피연산자를 사용한다.
8. 1401 문화
1401 프로젝트는 불 감마 3(Bull Gamma 3)의 성공에 대한 반응으로, "세계적인 회계 기계"(WWAM)라는 IBM 프로젝트에서 진화했다.[3] 1401은 IBM 펀치 카드 장비와 함께 독립적인 시스템으로 사용되거나, IBM 700 또는 7000 시리즈 시스템의 보조 장비로도 작동되었다.[4]
1401 구성의 월 임대료는 2500USD부터 시작되었는데,[5] 수요는 예상을 뛰어넘었다. IBM은 첫 5주 만에 5,200건의 주문을 받아 기쁘게 놀랐으며, 이는 기계의 전체 수명 동안 예측된 것보다 많은 수치였다.[6] 1961년 말까지 미국에 설치된 2,000대의 기계는 모든 제조업체의 모든 전자 프로그램 내장 방식 컴퓨터의 약 4분의 1이었다. 설치된 1401의 수는 1960년대 중반 10,000대를 넘어섰다. 전체적으로 1960년대 중반까지 전 세계 컴퓨터 시스템의 거의 절반이 1401 유형 시스템이었다.[6] 이 시스템은 1971년 2월까지 판매되었다.[7]
주로 소규모 기업에서 기본 데이터 처리 기계로 사용된 1401은 종종 메인프레임 컴퓨터의 오프라인 주변 장치 제어기로도 자주 사용되었다. 예를 들어 IBM 7090이 있는 이러한 설치에서 메인프레임 컴퓨터는 입출력에 자기 테이프만 사용했다. 1402 카드 판독기-펀치와 같은 느린 주변 장치에서 테이프로 입력 데이터를 전송하고, 테이프에서 카드 펀치, 1403 프린터 또는 기타 주변 장치로 출력 데이터를 전송하는 것은 1401이었다. 이를 통해 메인프레임의 처리량이 카드 판독기나 프린터의 속도에 제한되지 않았다. (자세한 내용은 스풀링(spooling)을 참조.)
IBM 내의 요소, 특히 1401 배포를 담당하는 임원인 존 하안스트라(John Haanstra)는 진화하는 요구 사항(예: IBM 1410)을 충족하기 위해 더 큰 모델에서 계속 사용하는 것을 지지했지만, 1964년 최고 경영진의 시스템/360(System/360)에 자원을 집중하기로 한 결정은 이러한 노력을 다소 갑자기 종식시켰다.
IBM은 하니웰 200(Honeywell 200)[8][9]의 경쟁 위협과 360의 1401 설계와의 비호환성에 직면했다. IBM은 마이크로코드 에뮬레이션을 ROM 형태로 사용하여 일부 System/360 모델이 1401 프로그램을 실행할 수 있도록 했다.[10]
IBM 1401은 그 인기와 대량 생산으로 인해 싱가포르(1963년; 중앙 공적 자금 위원회)[11] 및 대한민국(1967년; 경제 기획원)[12][13]과 같은 여러 국가에 도입된 최초의 전자 메인프레임 컴퓨터로 간주되는 경우가 많았다. 1970년대에 IBM은 인도와 파키스탄에 많은 1401을 설치했으며, 이곳에서는 1980년대까지 사용되었다.
두 개의 1401 시스템이 캘리포니아주 마운틴 뷰(Mountain View, California)의 컴퓨터 역사 박물관(Computer History Museum)에서 작동 상태로 복원되었다.[14][15]
2006년 10월, 아이슬란드의 아방가르드 음악가 요한 요한손(Jóhann Jóhannsson)은 음반사 4AD(4AD)를 통해 음반 《IBM 1401, A User's Manual》을 발매했다. [27] 이 음반의 컨셉은 그의 아버지이자 아이슬란드 최초의 컴퓨터 중 하나의 수석 정비 엔지니어였던 요한 귄나르손(Jóhann Gunnarsson)과 아이슬란드 최초의 프로그래머 중 한 명이었던 엘리아스 다비드손(Elias Davidsson)이 1964년에 수행한 작업을 기반으로 한다.[28] 이 음반은 원래 현악 4중주, 오르간, 전자 음악을 위해 작곡되었으며, 오랜 협력자이자 친구인 에르나 오마르스도티르(Erna Ómarsdóttir)의 무용 작품에 맞춰 연주될 예정이었다. 요한은 음반 녹음을 위해 60인조 현악 오케스트라를 위해 이 음악을 재작곡하고, 새로운 마지막 악장을 추가했으며, 전자 음악과 아버지의 다락방에서 발견한 노래하는 1401의 빈티지 리일투리일(reel-to-reel) 녹음을 통합했다.[28]
보다 잘 알려진 것은 CPU에 놓인 트랜지스터 라디오에서 음악을 재생하는 다양한 데모 프로그램[29]과 체인 프린터에서 X와 0을 사용하여 인쇄된 대부분 키치(kitsch)적인 그림들이다.[30] 다른 프로그램들은 프린터 해머의 충격을 이용하여 음색을 생성하는 특정 문자 그룹/시퀀스를 프린터로 인쇄하여 음악을 생성했다.
참조
[1]
서적
IBM's Early Computers
MIT Press
[2]
웹사이트
The IBM 1401
https://www.ibm.com/[...]
2024-01-05
[3]
웹사이트
Origins of Architecture and Design of the 1401
https://ibm-1401.inf[...]
2023-07-28
[4]
웹사이트
1401 Data Processing System
http://www.IBM.com/i[...]
2010-06-02
[5]
웹사이트
The IBM 1401
http://www.columbia.[...]
2024-03-28
[6]
웹사이트
Back to Life: The story behind CHM's IBM 1401 Restoration
https://web.archive.[...]
Computer History Museum
2011-05-27
[7]
웹사이트
FAQ's for Products and Services
http://www.IBM.com/i[...]
2010-06-02
[8]
텍스트
[9]
웹사이트
Using Liberator
http://ibm-1401.info[...]
[10]
서적
Building IBM: Shaping an Industry and Its Technology
MIT
[11]
웹사이트
Milestones
https://www.smartnat[...]
[12]
웹사이트
Mainframe transform
https://www.ibm.com/[...]
[13]
서적
처음쓰는 한국컴퓨터사
전자신문사
[14]
웹사이트
1401 Restoration Project
http://IBM-1401.info[...]
[15]
웹사이트
1401 "Rebuilding the IBM," by Philip E. Ross, IEEE Spectrum, November 2009
https://web.archive.[...]
[16]
텍스트
[17]
서적
IBM 1401AModern Theory of Operation
http://ibm-1401.info[...]
[18]
서적
IBM 1401 Data Processing System: Reference Manual
https://web.archive.[...]
1962-04-00
[19]
간행물
IBM 1401G
[20]
웹사이트
System Operation Reference Manual. IBM 1401. IBM 1460
http://www.textfiles[...]
[21]
웹사이트
Tom Van Vleck: 1401s I have known
http://www.multician[...]
[22]
웹사이트
Core memory frame from a 1401
https://web.archive.[...]
2012-07-15
[23]
웹사이트
The IBM 1401
http://www.ibm-1401.[...]
Computer History Museum
2012-07-15
[24]
웹사이트
IBM 1401 Principles of Programming, Section 7
http://ibm-1401.info[...]
IBM Corporation
2012-07-15
[25]
웹사이트
Custom Features for IBM 1401, 1440, and 1460 Data Processing Systems
https://web.archive.[...]
2015-09-23
[26]
웹사이트
ibm 1401, a user´s manual
http://www.4ad.com/j[...]
2010-06-02
[27]
웹사이트
IBM 1401, A User's Manual-Live in Italy
http://www.ernaomars[...]
2015-01-29
[28]
웹사이트
Jóhann Jóhannsson: IBM 1401, A User's Manual
https://web.archive.[...]
2015-01-29
[29]
웹사이트
1401-music-Movie
https://www.youtube.[...]
[30]
웹사이트
Working Paper version - Humans Thinking Like Machines - Incidental Media Art in the Swedish Welfare State
https://web.archive.[...]
University of Malmö, School of Arts & Communication
2017-11-29
[31]
웹아카이브
IBM 1401: The Mainframe
https://web.archive.[...]
[32]
웹아카이브
IBM 1401: The Mainframe
https://web.archive.[...]
[33]
웹사이트
The IBM 1401
http://www.columbia.[...]
[34]
웹사이트
1401 Data Processing System
http://www.IBM.com/i[...]
2010-06-02
[35]
웹사이트
http://www.columbia.[...]
[36]
웹사이트
Back to Life: The story behind CHM's IBM 1401 Restoration
http://www.computerh[...]
Computer History Museum
2011-05-27
[37]
웹사이트
FAQ's for Products and Services
http://www.IBM.com/i[...]
2010-06-02
[38]
서적
Building IBM: Shaping an Industry and Its Technology
MIT
[39]
웹사이트
1401 Restoration Project
http://IBM-1401.info[...]
2012-07-24
[40]
웹사이트
1401 "Rebuilding the IBM," by Philip E. Ross, IEEE Spectrum, November 2009
http://spectrum.ieee[...]
2012-07-24
[41]
기타
[42]
서적
IBM 1401 Data Processing System: Reference Manual
http://bitsavers.org[...]
[43]
웹사이트
Tom Van Vleck: 1401s I have known
http://www.multician[...]
2012-07-24
[44]
웹사이트
Core memory frame from an IBM 1401
http://members.optus[...]
2012-07-15
[45]
웹사이트
The IBM 1401
http://www.ibm-1401.[...]
Computer History Museum
2012-07-15
[46]
웹사이트
IBM 1401 Principles of Programming, Section 7
http://ibm-1401.info[...]
IBM Corporation
2012-07-15
[47]
서적
The Anatomy of a Compiler
[48]
웹사이트
Jóhann Jóhannsson profile
http://www.4ad.com/a[...]
2010-06-02
[49]
웹사이트
Jóhann Jóhannsson: IBM 1401, A User's Manual
http://www.ausersman[...]
2010-06-02
[50]
웹사이트
1401-music-Movie
https://www.youtube.[...]
2012-07-24
[51]
웹사이트
Working Paper version - Humans Thinking Like Machines - Incidental Media Art in the Swedish Welfare State
https://hdl.handle.n[...]
University of Malmö, School of Arts & Communication
2024-02-24
[52]
웹사이트
History of PIA
http://www.historyof[...]
2012-07-24
[53]
서적
(처음 쓰는) 한국 컴퓨터사
전자신문사
1997
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
