본문 바로가기
컴퓨터.반도체

컴퓨터 구조 1 - I format

by JROK 2023. 6. 3.

MIPS I-format Instructions

 

MIPS I-format Instructions은 immediate arithmetic 및 load/store 명령을 포함하며, 32비트 명령어를 통일적으로 사용할 수 있는데, 이때 상수 값은 -215에서 +215 - 1까지 설정할 수 있으며, 주소는 기준이 되는 rs 레지스터에 오프셋 값을 더하여 계산됩니다. 이와 같은 형식의 instruction set은 decoding을 복잡하게 만들 수 있지만, 형식을 유지하고 유사하게 유지함으로써 32비트 명령어를 균일하게 사용할 수 있습니다.

 

이는 좋은 디자인의 원칙 중 하나인 "좋은 디자인은 좋은 타협을 필요로 한다"를 따르는 것입니다.

 

앞 수업에서 R -format에 대해 설명했었죠?

 

I - format에서도 32bit를 위와 같이 나눠서 사용합니다

 

뒤에 I format에 대해 좀 더 자세하게 설명하겠습니다.

 

Stored Program Computers

Stored Program Computers는 이진법으로 표현된 명령어와 데이터가 함께 저장되며, 이진수로 표현된 명령어와 데이터는 Processor와 Memory에 저장됩니다. Accounting program, Editor program, C compiler 등의 프로그램들은 이진수로 표현된 명령어로 작성되어 Memory에 저장되며, 이러한 프로그램들은 다른 프로그램들과 상호작용하여 작동할 수 있습니다. 이러한 이진수 형태의 명령어는 Standardized ISAs에 의해 정해진 규격을 따르므로, 이진수로 작성된 프로그램들은 다른 컴퓨터에서도 동작할 수 있는 이진 호환성을 가집니다.

 

논리 연산 ( Logical Operations ) 

 

c나 java 공부할 때 배웠던 bitwise들이죠? 해당 bitwise들을 MIPS에서 이렇게 사용할 수 있습니다.

대충 앞에서 했던 내용들이긴 하네요

 

Shift operations

shamt는 이동할 비트 수를 지정하며,

Shift left logical은 논리적 왼쪽 쉬프트를 수행하고,

Shift left and fill with 0 bits는 0비트로 채워진 왼쪽 쉬프트를 수행합니다.

rs와 rt는 연산에 사용되는 레지스터를 지정하며, funct는 명령어의 종류를 나타냅니다. 이러한 shift 명령어들은 i 비트의 이동이 수행되며, srl by i bits는 i 비트만큼의 논리적 오른쪽 쉬프트를 수행하며, 부호가 없는 데이터(unsigned)에 대해서만 사용됩니다.

 

하나의 예시를 보면서 풀어봅시다

 

Shift operations - example - AND operations

AND operations에서는 어떤 데이터에서 특정 비트들만 선택하여 1로 유지하고, 나머지 비트들은 0으로 만드는 역할을 합니다. 위 코드에서는 $t1과 $t2 레지스터에 있는 값을 AND 연산하여 $t0 레지스터에 저장하였으며,

$t1과 $t2 레지스터에 저장된 값은 각각 0011 1100 0000 0000과1101 1100 0000 0000입니다.

AND 연산을 수행하면 0000 0000 0000 0000 0000 1100 0000 0000이라는 결과가 나오게 됩니다. 이렇게 AND 연산은 어떤 데이터에서 원하는 비트를 선택하여 사용할 수 있도록 도와주는 역할을 합니다.

Shift operations - example - OR operations

OR operations은 어떤 데이터에서 특정 비트들을 선택하여 1로 만들고, 나머지 비트를 그대로 유지하는 역할을 합니다. 위 코드에서는 $t1과 $t2 레지스터에 있는 값을 OR 연산하여 $t0 레지스터에 저장하였으며,

$t1과 $t2 레지스터에 저장된 값은 각각 0011 1100 0000 0000과 1101 1100 0000 0000입니다.

OR 연산을 수행하면 0000 0000 0000 0000 0011 1101 1100 0000이라는 결과가 나오게 됩니다. 이렇게 OR 연산은 어떤 데이터에서 원하는 비트를 선택하여 사용할 수 있도록 도와주는 역할을 합니다.

 

Shift operations - example - NOT operations

 

가장 먼저  MIPS에서는 NOR 연산이라는 방법으로 NOT 연산을 구현할 수 있으며, NOR 연산은 a NOR b == NOT (a OR b)의 관계를 가집니다.

 

NOT operations은 어떤 데이터의 비트를 반대로 바꾸는 역할을 합니다. 위 코드에서는 $t1 레지스터에 있는 값을 NOT 연산하여 $t0 레지스터에 저장하였으며, $t1 레지스터에 저장된 값은 0011 1100 0000 0000입니다.

NOT 연산을 수행하면 1100 0011 1111 1111 1111 1111 1111 1111이라는 결과가 나오게 됩니다. 이렇게 NOT 연산은 어떤 데이터의 비트를 반대로 바꾸어 사용할 수 있도록 도와주는 역할을 합니다.

결론

시험 기간이어서 업로드가 더디네요. 정리하고 있는 문서의 반절정도 정리한것 같아요... 파이팅

댓글