yeny_lab

[컴퓨터구조] Binary Adder, 그리고 Binary Adder-Subtractor | 컴퓨터의 산술 연산 구조 | 하드웨어

2021. 10. 10. 22:52·컴퓨터구조 & OS
728x90

[ 관련 글 ]

■ 전송 마이크로연산

[컴퓨터구조] Register Transfer 연산 의미, 그리고 BUS설계가 중요한 이유와 설계방법 | 하드웨어

 

■ 산술 마이크로연산

[컴퓨터구조] Binary Adder, 그리고 Binary Adder-Subtractor | 컴퓨터의 산술 연산 구조 | 하드웨어

[컴퓨터구조] Binary Incrementer | 컴퓨터의 산술 연산 구조 | 하드웨어

[컴퓨터구조] Arithmetic Circuits | 컴퓨터의 산술 연산 구조 | 하드웨어

 

■ 논리 마이크로연산

[컴퓨터구조] Logic Micro-operations | 컴퓨터의 논리 연산 구조 | 하드웨어

 

■ 이동 마이크로연산

[컴퓨터구조] Shift Micro-operations | 컴퓨터의 shift 연산 구조 | 하드웨어[컴퓨터구조] Arithmetic Circuits | 컴퓨터의 산술 연산 구조 | 하드웨어

 

 

 


[ 목차 ]

- Arithmetic micro-operation 간단히 짚고 넘어가기

- Binary Adder

- Binary Adder-Subtractor

 

 

 

 


Arithmetic micro-operation

 

어려울 것 없이 말그대로 산술연산이다.

레지스터 내의 데이터끼리 산술연산을 하는 것이다. 

우리가 아는 덧셈, 뺄셈, 1증가, 1감소, 보수연산 같은 것들 말이다. 

 

 

다음은 Arithmetic μoperation의 가능한 연산들과 그 기호이다.

 

참고로, '<-' 라는 화살표 기호는 register transfer μoperation (레지스터 전송 마이크로연산)의 연산자이다. 예를 들어 R2<-R1의 경우, 레지스터 R1의 내용을 R2로 전송한다는 의미이다.   

 

기호 의미
R3 <- R1 + R2 더하기
R3 <- R1 - R2 빼기
R2 <- barR2 (bar R2는 R2위에 짝대기 그은 기호임) 1의 보수
R2 <- barR2 + 1 2의 보수 (negate)
R3 <- R1 + barR2 +1 R1 + R2의 2의보수 (subtraction)
R1 <- R1 + 1 R1에 1 더함 (Increment)
R1 <- R1 - 1 R1에 1 빼기 (Decrement)

*텍스트로 문자 위에 bar기호를 표현할 수가 없어서 barR2따위로 기록했다. R2위에 bar를 쭉 그은 모양임을 유의!

 

 

이 micro-operation들 중에서 대표적으로 더하기(빼기)연산이 이루어지는 하드웨어 로직을 살펴 볼 것이다.

더하기하는 구조는 Adder라고 한다.  

 

 

 


 

Adder라는 하드웨어 로직 중에 가장 심플한 Adder인 'Binary Adder'의 구조를 확인해보자.

*참고로, Binary Adder는 느려서 실제로는 안쓴다고 한다. 왜 느린지는 아래서 간단히 설명할 것이다.

 

 

Binary Adder

 

- full Adder를 이용해 구현한다.

- n-bit Binary Adder일 경우 full Adder를 n개 사용하여 구현한다.

 

여기서는 4비트 Binary Adder의 구조를 볼 것이다.

full adder(FA)를 4개 사용하고 있는 것이 보인다.

 

- full adder란? (논리회로 관련 내용) 두 개의 입력과 이전 carry로 sum, carry를 구하는 것이다. 참고로 계산기의 구조 중 가산기(adder)에는 반가산기(HA), 전가산기(FA), 병렬가산기(PA)같은 것들이 있다.

 

출처: https://www.javatpoint.com/coa-binary-adder

사담: Binary Adder 회로 사진을 가져오느라 위 사이트에 우연히 들어갔는데, Binary Adder에 대해 설명을 깔끔하게 잘 해놓으셨다. 보고 오는 것도 강추한다.

 

 

위 회로를 간단히 설명해보겠다.

- 일단 4비트 레지스터 컴퓨터다. 레지스터 A와 B는 모두 4비트짜리다. 레지스터A에는 A3A2A1A0이, 레지스터B에는 B3B2B1B0이 내용물로 들어있다. 

 

- 이진수 A3A2A1A0과 B3B2B1B0를 더하는 것을 생각해보자. 각각의 FA에서는 총 3개의 입력을 받게 된다. 이때 맨 처음 carry인 C0값은 0으로 정하고 진행해보자. 그럼 위 binary adder는 S0, S1, S2, S3를 결과로 내고, 제일 마지막에 C4를 발생시킨다. 

 

 

예시로 값을 넣어 결과를 확인해보겠다. 

 

 

위 로직에서는 캐리를 총 4개 만들어내는데, 이렇게 캐리를 출력할때 딜레이가 생겨서 너무 느리다고 한다. 보통은 high speed Adder를 사용한다고 하는데, 컴퓨터 구조를 갓 배우는 지금 과정에서는 일단 이 정도만 알아두면 된다.

 

 


아무튼, 지금까지 더하기를 하는 Adder구조를 확인해보았다.

이번에는 더하기와 빼기 연산을 하는 Binary Adder-Subtractor의 구조를 보겠다.

 

 

Binary Adder-Subtractor

 

 

단순히 위 4비트 Binary Adder에 XOR게이트 4개가 추가된 구조이다. 

A0~A3는 full Adder에 그냥 연결시킨 채로 두고, 

B0~B3는 XOR게이트의 한쪽 단자에 연결시킨 구조이다. 

 

또 이전의 Adder와 달라진 것은, control signal M이라는 것을 C0로 넣고, 또 XOR의 한쪽 단자에 연결시켰다.

 

이 M은 무슨 시그널이냐? M은 minus의 약자 표시이다. 즉, M이 0이면 plus하게 되고, M이 1이면 minus하게 된다.

 

- M이 0일 경우

C0에도 0이 들어간다.

XOR게이트의 결과는 B를 따라간다.

=>즉, 방금 전에 본 일반적인 Binary Adder와 같은 역할을 한다. A+B를 출력하게 되는 것. 

 

- M이 1일 경우

C0에도 1이 들어간다. 

XOR게이트의 결과는 B와 반대가 된다. 

=> 즉, FA의 아웃풋은 A + B의2의보수가 된다. A + B-bar + 1 즉 A + B의2의보수.

=> 결론: 이렇게 XOR 게이트만 추가하면 덧셈과 뺄셈 모두 가능한 로직이 된다. 

 


 

728x90

'컴퓨터구조 & OS' 카테고리의 다른 글

[컴퓨터구조] Shift Micro-operations | 컴퓨터의 shift 연산 구조 | 하드웨어  (2) 2021.10.12
[컴퓨터구조] Logic Micro-operations | 컴퓨터의 논리 연산 구조 | 하드웨어  (2) 2021.10.11
[컴퓨터구조] Arithmetic Circuits | 컴퓨터의 산술 연산 구조 | 하드웨어  (1) 2021.10.11
[컴퓨터구조] Binary Incrementer | 컴퓨터의 산술 연산 구조 | 하드웨어  (0) 2021.10.11
[컴퓨터구조] Register Transfer 연산 의미, 그리고 BUS설계가 중요한 이유와 설계방법 | 하드웨어  (8) 2021.10.07
'컴퓨터구조 & OS' 카테고리의 다른 글
  • [컴퓨터구조] Logic Micro-operations | 컴퓨터의 논리 연산 구조 | 하드웨어
  • [컴퓨터구조] Arithmetic Circuits | 컴퓨터의 산술 연산 구조 | 하드웨어
  • [컴퓨터구조] Binary Incrementer | 컴퓨터의 산술 연산 구조 | 하드웨어
  • [컴퓨터구조] Register Transfer 연산 의미, 그리고 BUS설계가 중요한 이유와 설계방법 | 하드웨어
히어로맛쿠키
히어로맛쿠키
  • 히어로맛쿠키
    yeny_lab
    히어로맛쿠키
  • 전체
    오늘
    어제
    • 분류 전체보기 (389)
      • 미분류글 (32)
        • ㅇ (2)
      • JAVA (84)
        • Effective Java (1)
        • Application (21)
      • 컴퓨터구조 & OS (28)
      • 자료구조 + 알고리즘 (43)
      • Database (12)
      • 컴파일러 (10)
      • 수학 (33)
        • 미분방정식 (12)
      • 데이터분석과 머신러닝 (38)
      • 기타 (59)
      • yyeeennyy (25)
  • 공지사항

    • ^o^/♡
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
히어로맛쿠키
[컴퓨터구조] Binary Adder, 그리고 Binary Adder-Subtractor | 컴퓨터의 산술 연산 구조 | 하드웨어
상단으로

티스토리툴바