본문 바로가기
Computer Science/시스템 프로그래밍

SIC/XE 아키텍처: 기본 구조에서 명령어 집합까지 (1)

by 큌 2024. 3. 3.
반응형

 

SIC/XE Architecture 1

  • Memory
    • 사용 가능한 최대 메모리: 1MB(2^20바이트)
  • Registers
    • SIC로 레지스터 5개 + 추가 레지스터 4개(B, S, T 및 F)
      • B(3): 기본 레지스터 – addressing에 사용(24비트)
      • S (4) 및 T (5) : 일반 작업 레지스터 – 특수 용도 없음(24비트)
      • F(6): 부동소수점 accumulator 누산기(48비트)
  • 데이터 형식
    • 표준 버전과 동일한 데이터 형식
    • 48비트 부동 소수점 데이터 유형이 추가됨

전체 메모리 주소 공간을 20비트로 나타냄

5개의 SIC 레지스터와 4대의 추가 레지스터 사용

48bit(8byte)의 부동 소수점 데이터 처리 가능


SIC/XE Architecture 2

  • (Machine) Instruction Formats
    • Format 1:: 메모리 참조 없음(1바이트)
    • Format 2: 레지스터 작업에 대한 메모리 참조 없음(2바이트)
    • Format 3: Relative addressing 상대 주소 지정(3 bytes)
      • Flag e = 0
    • Format 4: Address 필드를 20 bits(4 bytes)로 확장
      • Flag e = 1

 

 

 

 


SIC/XE의 명령어 포멧은 기본 버전보다 더욱 복잡

4개의 명령어 포멧 존재

포멧3는 6개의 플래그 비트와 12개의 어드레스 비트 존재, Flag e = 0 일때 사용

포멧4는 6개의 플래그 비트와 20개의 어드레스 비트 존재, Flag e = 1 일때 사용


SIC/XE Architecture 3

  • Addressing Modes
    • Format 3에 대한 Relative addressing 상대 주소 지정 모드
      • Base relative addressing 일때 b=1, p=0: TA= (B) + disp/addr
      • PC relative addressing 일때 b=0, p=1: TA= (PC) + disp/addr
    • Format 3, 4에 대한 Direct addressing 직접 주소 지정 모드
      • b = p = 0: TA(Target Address) = disp/addr
        • cf., b = p = 1 은 불가능(오류 사례)
    • 이러한 어드레싱 모드는 indexed addressing 인덱스 주소 지정 모드와 결합 가능, x=1 일 때 목표 어드레싱 계산에서 term(X)가 추가
  • Addressing Modes(continued)
    • n 및 i bits는 target address의 사용 방법을 지정하는 데 사용
      • n=0, i=1 : immediate addressing 즉시 주소 지정, 메모리 참조 없음, 대상 주소가 피연산자 값으로 사용
      • n=1, i=0 : indirect addressing 간접 주소 지정
      • i=0, n=0: simple addressing 간단 주소 지정, SIC 용
        • b, p, e가 주소 필드로 사용된다는 것을 의미(상향 호환을 위해)
      • i=1, n=1: simple addressing 간단 주소 지정, SIC/XE 용
    • immediate addressing 즉시 주소 지정 및 indirect addressing 간접 주소 지정 모드에서는 인덱싱을 사용할 수 없음

 

 


  • SIC/XE 버전은 SIC 버전 보다 더 많은 어드레싱 모드를 제공
    • disp = displayment
    • b = base register
    • p = pc register
  • 포맷3는 주소 비트가 12개 이기 때문에 메모리 전체 주소를 커버 불가능, 그렇기 때문에 보통 Relative Addressing 모드를 사용
  • 포맷4는 주소 비트가 20개 이기 때문에 메모지 전체 주소를 커버 가능, 그렇기 때문에 Direct Addressing 모드에 적합
  • Immediate Addressing 모드는 상수 표현에 사용
  • Indirect Addressing 모드는 C언어의 포인터와 유사
  • SIC/XE가 Indexed Addressing 모드를 지원하는데, 이때 Relative Addressing 모드나 Direct Addressing모드와 조합해서 사용 가능
  • Immediate Addressing 모드와 Indirect Addressing 모드는 Indexed Addressing 모드와 조합해서 사용 불가

Q. Simple Addressing 모드란?

A. Immediate Addressing 모드와 Indirect Addressing 모드를 제외한 모드 이후 i, n 값에 따라 SIC와 SIC/XE로 구분

SIC/XE 에서 Relative Addressing 모드, Direct Addressing 모드, Indexed Addressing 모드가 Simple Addressing 모드


Examples of SIC/XE instructions and addressing modes (Fig. 1.1)

Simple Addressing 모드

Addr = 0x600, PC = 0x003000, Target Address = 3600, Register A = 0x103000


Indirect Addressing 모드

Addr = 0x030, PC = 0x003000, Target Address = 3030 → 3600, Register A = 0x103000


Q. 세번째 명령어 라인에서 두번째 타겟을 찾은 이후 오퍼랜드 코드가 아닌 이유?

A. 타겟 어드레스는 3030, 그 메모리 안에 있는 값은 또다른 메모리 주소, 실제 오퍼랜드 주소는 3600

Q. 두번째 명령어 라인에서 x, b 코드가 enable, 이때 타겟 어드레스를 구할때 x와 b를 더해야하는가?

A. 더하는 것이 맞음, indexed addressing 모드와 Base relative addressing 모드를 같이 사용하겠다는 의미

Q. 다섯번째 명령어 라인의 i, n 코드가 0이라 SIC 명령어인데 왜 주소 비트가 12비트인가.

A. 다섯번째 명령어 라인은 i, n 코드가 0이기 때문에 SIC 명령어로 사용하겠다는 의미, 즉 15비트가 주소 맞다.

n, p, e 그리고 addr 15비트가 Address, 그리고 x 비트가 0이기 때문에 Address 자체가 Target Address

Target Address = 3600, Register A = 0x103000

여섯번째 명령어는 포멧4가 맞고, 총 20비트 어드레스 필드 존재


SIC/XE Architecture 4

  • Instruction Set
    • SIC 표준 버전에 대한 모든 명령
    • Load and Store 레지스터: LDB, STB 등
    • 부동소수점 연산: ADDF, SUBF, MULF, DIVF
      • ADDF m ? F ← (F) + (m..m+5)
    • Register-to-register 명령어: RMO, ADDR, SUBR, MULR, DIVR
      • RMO r1, r2 ? r2 ← (r1)
      • ADDR r1, r2 ? r2 ← (r2) + (r1)
    • Supervisor call: SVC
      • SVCn
        • OS와의 통신을 위한 SVC 인터럽트 생성
        • n은 슈퍼바이저 호출 번호(즉, 인터럽트 번호)

  • 기본 버전에 대한 모든 지침 포함
  • LDA, STA와 유사한 LDB, STB 존재
  • 부동소수점 연산을 위한 F 레지스터 관련 명령어 존재
  • Register-to-Register 명령어 존재, 포멧 2
  • 운영체제와 통신을 위해 인터럽트를 생성하는 Supervisor call 존재
  • OS에는 여러 종류의 인터럽트 존재

  • 기본적으로 애플리케이션이 돌때, 애플리케이션 기능만으로 실행 불가능
  • 많은 부분을 OS로 부터 어떤 서비스를 제공 받아야함
  • 애플리케이션이 어떤 서비스를 필요한지 OS에게 요청하는 것이 SVC
  • 프로그램이 돌다가 서비스를 받아야할 시점에 SVC 명령어를 호출
  • 이에 해당하는 인터럽트가 발생, OS가 그 서비스를 제공하기 위한 명령 실행 후 결과 리턴
  • 프로그램이 그 결과를 기반으로 다음 명령어를 실행, 이것이 인터럽트 프로세싱
  • Supervisor Call = System Call

Q. SIC/XE 버전에서 한 워드 크기가 6Byte인가?

A. 1 Word는 3Byte이고, F Register만 6Byte 크기


SIC/XE Architecture 5

  • 입력 및 출력
    • SIC에 대한 I/O 지침은 SIC/XE에서도 사용할 수 있음
    • 또한 CPU가 다른 명령을 실행하는 동안 입출력을 수행하는 데 사용할 수 있는 I/O 채널도 있음
      • 이를 통해 컴퓨팅과 I/O가 중복되어 보다 효율적인 시스템 운영이 가능
    • SIO(시작), TIO(테스트), HIO(정지)
  • 부록 A는 모든 SIC 및 SIC/XE 지침의 전체 목록과 작동 코드 및 각각에 의해 수행되는 기능에 대한 사양을 제공

  • I/O 채널은 스페셜설 I/O 명령에 특화된 프로세서
  • 많은 아키텍처에서 쓰는 프로세서는 DMA라는 하드웨어로 I/O 채널을 부름
  • CPU는 프로세서에 데이터를 옮겨달라고 요청, 그러면 프로세서가 메인 메모리로 데이터를 옮김
  • 그때 CPU는 다른 컴퓨팅 작업을 할 수 있고, 전체 시스템 관점에서 훨씬 효율적
  • SIC/XE 아키텍처에서 이것을 I/O 채널이라고 부름
  • 이를 실행하고 테스트하는 명령어가 I/O 명령어 TD, WD, RD
  • 즉 I/O 채널의 존재 이유는 I/O 작업을 하는 도중 CPU가 다른 컴퓨팅 작업을 하기 위해
  • I/O 작업을 CPU가 하는 것은 비 효율적, 다른 컴퓨팅 작업을 CPU가 하는 것이 의미 있음
  • CPU가 I/O 작업 중에 Idle 상태로 남아 아무 작업을 안하기 때문에 전체 시스템 관점에서 비효율적
  • I/O 명령를 처리하고, CPU에서 작업 종료를 알려주는 전용 하드웨어 장치인 I/O 채널

Assembly Language Statements

  • 3가지 유형의 기능 설명
    • Instructions: 어셈블러가 런타임에 실행되는 하나 이상의 개체 코드로 변환
      • 각 명령은 작업 중 하나에 해당
    • Directives: 어셈블러에게 조치를 취하도록 지시
      • Object Code(Machine Code)에 영향을 미치지 않음
        • 예를 들어, WORD 지시어는 하나의 단어 정수 상수를 생성
    • Macro: 다른 문의 시퀀스에 대한 "단축"
      • 어셈블러는 매크로를 나타내는 문으로 확장한 다음 이러한 새 문을 조합


3가지 타입의 일반적 어셈블리 언어를 배웠음

object code = machine code

directive는 object code로 변환되지 않음

Macro는 Function이나 Sub Routine과는 다름

Function이나 Sub Routine는 점프가 필요, 그러나 Macro는 단순 명령문의 치환


SIC Programming Examples

[pp. [그림 12-20] SIC 및 SIC/XE 어셈블러 언어 프로그래밍의 간단한 예

  • 그림 1.2: 데이터 이동 작업
    • 메모리 간 이동 명령 없음
  • 그림 1.3: 산술 명령어
    • 모든 작업은 레지스터 A를 사용하여 수행
  • 그림 1.4 및 1.5: 루핑 및 인덱싱 작업
  • 그림 1.6: I/O 작업
  • 그림 1.7: 서브루틴 호출 및 record 입력 작업

Figure 1.2(a) – for SIC

  • 이 프로그램은 명령어를 통해 할당된 값을 복사하려고 함
  • SIC, SIC/XE는 메모리 간 복사 불가능, 무조건 레지스터를 이용해야함
  • 레지스터 A를 이용하여 복사 진행
  • FIVE 숫자 5를 LDA 명령어를 이용하여 레지스터 A에 복사
  • STA 명령어를 이용해 ALPHA 메모리 스페이스에 FIVE 숫자 5 복사
  • LDCH 명령어를 이용해 레지스터 A에 가장 오른쪽 8비트 영역에 CHARZ 문자 ‘Z’ 복사
  • STCH 명령어를 이용해 C1 메모리 스페이스에 문자 ‘Z’ 복사
  • 캐릭터 데이터 사용시 prefix C 필요
  • EX) CHARZ BYTE C’Z’
  • 디렉티브로 어떤 메모리 공간이나 데이터를 정의 가능
  • 1워드에 상수 숫자 5를 FIVE로 정의
  • 1바이트에 캐릭터 ‘Z’를 정의
  • 메모리 어딘가에 상수 데이터가 저장
  • RESW와 RESB는 비어있는 메모리 공간을 정의
  • 어떤 값으로도 초기화가 안되어있는 상태로 정의
  • 1워드 스페이스 메모리 정의
  • 1바이트 스페이스 메모리 정의
  • RESW: 워드 단위로 메모리 할당
  • RESB: 바이트 단위로 메모리 할당

Figure 1.2(a) – for SIC/XE

  • 이 프로그램은 SIC/XE에서 지원하는 새로운 기능으로 구현
  • #5, #90 처럼 상수 값을 바로 사용, prefix로 #을 붙이면 상수 ← Immediate Adressing 모드
  • 이는 즉 SIC 처럼 디렉티브를 통해 메모리를 통해 상수를 정의할 필요가 없다는 것을 의미
  • 명령어에 바로 상수 값을 넣어줄 수 있기 때문

위 프로그램 예제와 동일한 예제

SIC/XE가 제공하는 새로운 기능을 사용하면 코드를 더욱 간결하게 만들 수 있음 → SIC/XE의 장점


Actual Machine Architecture

  • CISC (Complex Instruction Set Computers) 복합 명령어 집합 컴퓨터
    • 크고 복잡한 지침 세트 제공
    • 여러 가지 다른 명령 형식 및 길이
    • 다양한 주소 지정 모드
    • h/w에서의 구현은 복잡함
  • RISC (Reduced Instruction Set Computers) 저감 명령 집합 컴퓨터
    • 적은 수의 기계 명령, 명령 형식 및 주소 지정 모드
    • 표준, 고정 명령 길이 및 단일 주기 실행
    • 장점
      • 프로세서의 설계를 단순화
      • 보다 빠르고 저렴한 프로세서 개발
      • 안정성 향상, 명령 실행 시간 단축

CISC는 복잡한 어드레싱 모드와 명령어 포멧을 가지고 있음

하지만, 다양한 기능을 통해 프로그래머가 더욱 짧은 어셈블리 프로그램을 개발할 수 있음

그러나 매우 복잡한 구현을 가지고 있음

RISC는 간단한 어드레싱 모드와 명령어 포맷을 가지고 있음

RISC를 지원하는 CPU 하드웨어를 개발하기 더욱 간단함

RISC는 CISC보다 명령어가 더욱 빠르고, 강력함

많은 모던 아키텍처가 RISC를 기반으로 개발되었으며

많은 배움을 필요 없이 프로그래머가 어셈블리 프로그램을 개발하기 쉬움

다만 어셈블러와 컴파일러의 성능과 자동화 기능이 매우 중요

CISC는 복잡하고 많은 명령어 집합을 제공

RISC는 굉장히 간단한 명령어 집합을 제공

같은 프로그램을 짰을때 CISC는 매우 간단하게 짤 수 있으나 어려움, RISC는 쉬우나 복잡하게 작성될 수 있음


ARM Architecture

  • 에이콘 RISC 기계(이후, 고급 RISC 기계)
  • ARM 코어
    • Cortex A, M 시리즈(예: M4)
  • ARM 조립기

.

2024.03.03 - [Computer Science/시스템 프로그래밍] - SIC/XE 아키텍처: 기본 구조에서 명령어 집합까지 (2)

 

SIC/XE 아키텍처: 기본 구조에서 명령어 집합까지 (2)

5. SIC/XE 아키텍처의 입력 및 출력 시스템 . SIC/XE 아키텍처는 효율적인 시스템 운영을 위해 고안된 입력 및 출력(I/O) 기능을 포함하고 있습니다. 이 시스템은 기본 SIC 모델의 I/O 명령어를 사용할

perfect-occasion.co.kr

 

반응형