[TIL] 1월 5일

yeon·2021년 1월 5일
1
post-custom-banner

CPU의 구조

위키독스

출처 : IT 기술노트 (알렉 님)

CPU의 내부 구성

  • 산술 논리 연산장치(ALU : Arithmetic Logic Unit)
    • 산술적인 연산과 논리적인 연산을 담당하는 장치
    • 가산기, 보수기, 누산기, 기억레지스터, 데이터 레지스터 등으로 구성
    • 메모리로 부터 읽어온 데이터는 레지스터에 저장되고,
    • ALU 는 레지스터에 저장된 데이터를 이용하여 산술 연산 수행
  • 제어장치
    • CPU가 자신 및 주변기기를 컨트롤하는 장치
    • 프로그램 계수기(program counter)
      • 프로그램의 수행순서 제어
    • 명령 레지스터(instruction register)
      • 현재 수행중인 명령어의 내용 임시 기억
    • 명령 해독기(instruction decoder)
      • 명령 레지스터에 수록된 명령을 해독하여 수행 될 장치에 제어신호를 보낸다.
  • 레지스터의 종류
    • CPU에 있는 기억장치
    • IR(Instruction Register) : 현재 수행중인 명령어 부호를 저장
    • PC(Program Counter) : 명령이 저장된 메모리의 주소를 가르킴
    • AC(Accumulator) : 연산의 결과를 임시로 기억하는 레지스터
  • 명령어 수행 과정 (CPU가 하나의 명령Operation 을 처리하는 과정)
    • 읽기(Fetch Instruction) : 메모리에서 명령을 가져옴
    • 해석(Decode Instruction) : 명령을 해석
    • 실행(Execute Instruction) : 명령 수행
    • 기록(Write Back) : 수행한 결과 기록
  • 명령어를 가져오는것 (메모리에서 CPU로)

자바의 정석 ch3 연산자

논리연산자

비트연산자(121p)

  • 피연산자를 비트단위논리 연산한다.

  • ^ (XOR 연산자)

    • 피연산자의 값이 서로 다를 때만 참(1)
  • 쉬프트 연산자 << >>

    • 2진수의 각 자리를 오른쪽(>>) 혹은 왼쪽(<<)으로 이동시키는 연산자

    • 8 << 2

      • 10진수 8을 2진수로 변환하면 00001000

      • 1000 을 왼쪽으로 두자리 이동시킨다.

      • 자리 이동으로 저장범위를 벗어난 값은 버려지고, 빈자리는 0으로 채워진다

        0010000

      • 00100000 을 10진수로 변환하면 32가 된다.

      • 즉, 왼쪽으로 한자리 이동시키면 2를 곱하는 셈이다.

      • 2진수 n자리를 왼쪽으로 이동(<<)하면 피연산자를 2n2^n으로 곱한 셈이다.

    • x << n 은 x2nx * 2^n

오늘 한 일

  • 컴퓨터의 구조 예전에 볼땐 사진도 너무 기계같고 재미없고 이해도 못했는데 운영체제 강의로 조금 쌓인 아는 내용이 나오다보니 재밌는거 같다. 꾸준하게 공부하기
  • 컴퓨터의 구조에 대해 찾아보다가 발견한 wikidocs에서 쉽게 설명이 되어있어서 일부 읽고 내용정리 함
    • 운영체제 강의를 더 들어보면 더 유용할 듯

Reminder

  • 어떻게 하면 코드를 더 깔끔하게 짤 수 있을까 고민하면서 리팩토링 하기
  • 조원분이 JUnit으로 테스트 케이스 만드는 법 알려주셨는데 아직 라이브러리 사용에 무지해서 내가 적용하기엔 무리같다ㅠㅠ 나중에 시도해보기
  • 컴퓨터의 구조 백엔드 개발자라면 알아야 한다.
  • 만화로 쉽게 배우는 CPU
    • 만화 처럼 안읽힐 거 같지만 천천히 읽어보자, 알고리즘 책처럼
    • (Hello Coding 알고리즘 책도 읽다 막혀서 처음부터 읽고 있는데...ㅎㅎㅎ)
post-custom-banner

2개의 댓글

comment-user-thumbnail
2021년 1월 6일

https://youtu.be/we3zJE3hlWE 연 테스트코드 작성 관련하여 참고해봐요!ㅎㅎ

1개의 답글