CS

CS) CPU구조와 동작과정

2023. 2. 8. 16:27
728x90

컴퓨터 구조

컴퓨터는 중앙처리장치(CPU), 기억장치(Ram,하드디스크), 입출력 장치로 구성된다.


Word

Word란 하나의 기계어 명령어나 연산을 통해 저장된 장치로부터 레지스터에 옮겨 놓을 수 있는 데이터 단위이다.

우리가 흔히 사용하는 32bit 컴퓨터, 64bit 컴퓨터에선 Word가 32bit, 64bit인것이다.

즉 컴퓨터가 데이터를 처리하는 단위가 32bit or 64bit라는 것이다.


CPU란

cpu개념

  • CPU는 입력장치로부터 자료를 입력받아 연산후 결과를 출력장치로 보내 과정을 제어하는 핵심장치이다.

cpu 구성요소

  • 제어장치, 연산장치, 레지스터, CPU내부 버스로 구성된다.

  • 제어장치(Control Unit)

    • 컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치이다.
    • 명령레지스터에서 읽어들인 명령어를 해석후 해당하는 장치에 신호를보내 실행하도록 지시한다.
  • 연산장치(ALU)

    • 제어장치로부터 받은 명령에 따라 실제 연산(논리연산)을 수행하는 장치 이다.
  • 레지스터

    • cpu 내부에서 처리할 명령어나 연산의 결과, 주소등을 일시적으로 기억하는 기억장치이다.
  • 내부버스

    • ALU,레지스터간 데이터이동을 위한 데이터,주소 선들, 제어장치로부터 발생되는 제어 신호를 전송하는 선들로 구성된다.

레지스터

CPU에서 사용되는 레지스터는 여러 종류가있다.

  • PC(Program Counter) - 다음번에 수행할 메모리의 주소가 들어있다. 현재 A주소의 명령어를 실행하고 있다면 PC값은 A+1이다.
  • MAR(Memory Address Register) - 프로그램 카운터에서 수행할 주소를 받은후 그주소에 있는 데이터를 가져오는 역활을 한다.
  • MBR(Memory Buffer Register) - MAR이 가져온 데이터나 명령들을 일시적으로 저장한다.
  • IR(Instruction Register) - MBR에 저장된 내용중 명령은 IR에 저장된다.
  • Accumulator(누산기) - MBR의 내용중 연산에 사용될 데이터가 이동하여 연산된결과를 일시적으로 저장하는 레지스터이다.(최종결과는 메모리 버퍼 레지스터(MAR)을 통해 메모리로 전송된다)

프로그램 실행 단계

프로그램의 기본실행은 Fetch,Decode,Execution 단계를 거친다.


명령어 동작설명
fetch 메모리로부터 명령어와 데이터를 프로세스로 가져오는 단계이다.
Decode 명령어를 분석해서 처리할 컨트롤 신호를 만드는 단계이다.
Execute 컨트롤 신호에 따라 실제로 연산,처리,메모리읽기 또는 쓰기를 실행하는 단계이다.

CPU는 각 클럭마다 Fetch,Decode,Execute를 반복한다.

PC에 있는 주소값으로가 명령어를 IR에 저장하고(Fetch)

IR에 있는 명령어를 해석한후 (Decode)

Accumulator에 연산에 사용할 데이터를 저장한다. (Execute)

위 CPU는 위 과정을 무한반복하는것이다. 혹시나 나중에 또모른다면 아래 영상을 다시보자


명령어 사이클

명령어 사이클이란 cpu는 프로그램 실행을 위해 주기억장치에서 명령어를 가져오고 해독하는 과정을 반복한다. 이 활동을 명령어 사이클이라 한다.

  1. 처리해야할 데이터는 주기억장치RAM에서 인출되어 레지스터1번으로 전달된다.

  2. 제어장치로 부터 ALU가 어떠한 연산을 해야하는지 제어신호을 받는다.

  3. ALU에서는 레지스터 1번, 레지스터 2번으로 부터 받은 정보와 제어신호로부터 받은 연산을 수행한다.

  4. ALU로부터 나온 연산 결과는 다시 주기억장치 RAM에 저장된다.


Reference

728x90

'CS' 카테고리의 다른 글

CS) 객체지향(OOP)  (0) 2023.02.08
CS) Virtual Memory  (0) 2023.02.08
CS) Byte padding  (0) 2023.02.08
CS) 프로세스 메모리 구조  (0) 2023.02.08
VS Code(Remote SSH)  (0) 2023.02.05

VS Code(Remote SSH)

2023. 2. 5. 21:07
728x90

VS Code의 Remote SSH사용하는 이유

Local Machine에서 개발 가능하지만 Server 개발일경우 원격으로 개발을 해야하는 경우가 있을수있다. 이럴떈 Local에서 개발을 한후 Server로 이동시켜야한다.

사용하는 Local Machine이 windows인 반면 개발해야하는 환경이 Linux라면 Linux Machine에 접속하여 개발을해야한다.

결론-> VSCode의 Remote Development Extension을 사용하면 Remote Machine을 Local Machine 처럼 생각될수있게 개발하는것이 가능하다.


또한 EC2 를 사용하여 AWS 배포를 할때, VsCode 를 사용하여 SSH 연결을 한다면, EC2 즉 서버에 배포한 코드를 조금더 빠르게 수정하고 테스트 해볼수있다.


위 그림처럼 Local OS에서 VSCode로 작업한 것을 SSH Tunnel을 통해 Remote Machine으로 보내는 형태로 작업을 진행할것이다.
(SSH 외 Containers 또는 WSL을 사용하여 개발을 할수있지만 요번 글은 SSH를 사용해보도록 하겠다)




VS Code에서 SSH를 통한 원격 개발 과정

  1. VSCode의 확장탭에서 Remote Development를 검색하고 설치한다.



  2. F1키를 눌러 >Remote-SSH:... 를 클릭한다.



  1. 클릭후 UserId@host(ip)를 입력해준다.
    ex) 필자 같은경우는 (리눅스 UserId= chanyoun) 따라서 -> chanyoun@ip를 입력했다.



  2. 그후 Select SSH configuration file to update 라는 text가 보인다. 여기서 우리가 Config File을 저장할 위치를 설정해줘야하는데
    C:\Users\<본인의 윈도우 계정 아이디>\.ssh\<설정파일이름> 식으로 경로를 지정하면된다.



  3. 경로를 지정하게되면 VSCode에서 Host added! 라는 알림창이 뜨게되며, Host가 추가될것이다.



  4. 그후 다시 F1키를 눌러 >Remote-SSH를 입력하면 전에는 보이지않았던 host가 보이게되고 클릭하면 아래와같은 새로운 VSCode 창이 뜨게된다.



  5. 이후 팔레트 창에 (필자는 Linux사용) 설정해준 Linux hostid에대한 비밀번호를 입력하면
    아래 사진처럼 왼쪽하단에 SSH-IP 형태로 연결이된다!.



  6. 마지막으로 ctrl+o를 이용해 원하는 디렉토리에서 작업을 할수있게 된다.




확인 테스트

Virtualbox를 통해 Linux를 실행시킨후 Linux의 cs16디렉토리에있는 main.java코드를 수정한다.

Linux에서 수정하면 -> VSCode로 업데이트가 잘되는지
VSCode에서 코드 수정시 Linux에서 코드가 업데이트 되는지 확인한다.


  1. 현재 main.java의 상태



  2. Linux에서 코드를 수정할때 VSCode에서 업데이트 되는지 확인한다.



    Linux에서 코드 추가후 저장을 누르면 자동적으로 VSCode에도 주석이 추가되는것을 볼수있다.



  3. VSCode에서 코드 수정시 Linux에서 코드가 업데이트 되는지 확인한다.

    주석추가 후 저장




    이번에도 VSCode에서 추가한 주석이 Linux에도 자동적으로 추가가 되는것을 알수있다.

728x90

'CS' 카테고리의 다른 글

CS) 객체지향(OOP)  (0) 2023.02.08
CS) Virtual Memory  (0) 2023.02.08
CS) Byte padding  (0) 2023.02.08
CS) 프로세스 메모리 구조  (0) 2023.02.08
CS) CPU구조와 동작과정  (0) 2023.02.08

+ Recent posts