System Programming 8

[system programming] CPU 아키텍처 (pipelining hazards - stall, bypass, speculation)

본 게시글은서울대학교 데이터사이언스대학원 성효진 교수님의데이터사이언스 응용을 위한 시스템 컴퓨팅 강의를학습을 목적으로 재구성하였습니다지난 시간에는 CPU 아키텍처를 배우면서각 step별 pipelining을 배웠고이런 pipelining 과정에서 각 단계마다 이쁘게 딱딱 맞아떨어지면 좋지만실제로는 예외 상황들이 자주 발생해서각 pipeline step간에 병목이 발생한다이러한 병목을 hazard라고 하고이러한 hazard는 주로 data 혹은 control dependency에 의해 발생한다따라서 hazard를 해결하기 위해 크게 3가지 방법이 있다고 했는데1. stall2. bypass3. speculation이라고 했다 그 중 stall은 가장 단순한 방법으로dependency가 해결될 때 까지 기다..

[system programming] CPU 아키텍처 (pipelining, hazards)

본 게시글은서울대학교 데이터사이언스대학원 성효진 교수님의데이터사이언스 응용을 위한 컴퓨팅 시스템 강의를학습을 목적으로 재구성하였습니다우리가 이미 앞에서Program Representation을 배우면서다 들어봤을 내용이라고 하셨다 이전에는 프로그램의 표현을 배우기 위한 배경지식으로CPU 아키텍처에 대해서 배웠다면이번 시간에는 정말 본격적인 CPU 아키텍처에 관한 내용이라고생각하면 좋을 것 같다교수님 말씀도 너무 빠르고 진도도 너무 빨라서따라가는게 약간 벅차다 ㅠ 암튼 이번 수업 내용 정리 시작 ㅠ  컴퓨터란 무엇인가?단순히 우리가 사용하고있는 데스크탑이나 노트북 말고정말로 컴퓨터란 무엇인가? 흔히들 컴퓨터를 계산하는 기계라고 하지만그렇다면 계산기는 컴퓨터인가?보통 계산기를 컴퓨터라고 하지는 않는다   이..

[system programming] Linux 운영체제 Exception Control Flow

본 게시글은서울대학교 데이터사이언스대학원 정형수 교수님의 데이터사이언스 응용을 위한 시스템 프로그래밍 강의를학습을 목적으로 재구성하였습니다  이번 시간에 배울 내용은linux 운영체제 내에서의 exception control flow에 대한 내용이다 이번 수업의 내용은 굉장히 중요한 내용인데이 내용을 이해를 하지 못하면이 시스템 프로그래밍이라는 수업 자체를따라가기가 매우 힘들어 진다고 한다 그래서 교수님께서 이번 수업은 강의 녹화본을 올릴테니이해가 안가면 갈때까지 영상을 보며 이해하라고 하셨다.. 지금까지는 단순히 assembly code와user program 내에서 어떻게 메모리와 register가 이동하고어떤 과정을 거치는지를 알아봤다면오늘 배우는 내용은 지금까지 배우는 내용에서더 확장된 내용이다 ..

[system programming] Program의 표현과 실행(Basic of Assembly Code) - 2

본 게시글은서울대학교 데이터사이언스대학원 정형수 교수님의 데이터사이언스 응용을 위한 시스템 프로그래밍 강의를학습을 목적으로 재구성하였습니다 저번 시간에는 data movement의assembly의 general form을 배웠었다잠깐만 되짚어보자면 S는 스케일이라 주소값에 곱하는 값이고D는 Displacement라 주소값에 더하는 값이다  지난시간에 배웠던 leaq 연산자leaq는 주소값에 접근하는 것이 아닌단순히 주소값끼리만 연산하는 연산자였다그래서 더하기, 곱셈과도 같은 일반 연산에도많이 사용된다  주소값 연산의 예시이다위에서 봤던 leaq의 규칙과 동일하다괄호 앞에 오는 값은 D라 더하기괄호 안에 오는 값은 S라 %rcx에 곱하기를 해준다  이제 다른 Arithmetic Operation을 알아보자..

[system programming] Program의 표현과 실행(Basic of Assembly Code) - 1

본 게시글은서울대학교 데이터사이언스대학원 정형수 교수님의데이터사이언스를 위한 컴퓨팅 시스템 강의를학습을 목적으로 재구성하였습니다이제 본격적으로 우리가 프로그래밍을 하면컴퓨터가 내부에서 어떻게 작동하고어떻게 코드들을 처리하는지 그 과정을 배워본다    우선 내가 짠 파이썬 코드를컴퓨터가 어떻게 해석하는지 알기 위해선하드웨어부터 이해할 필요가 있다 위 ppt에 소개되어있는 하드웨어는Intel의 x86 프로세서로서버시장에서는 굉장히 dominate한 하드웨어라고한다본 수업에서는 이 하드웨어를 예제로 수업을 진행한다 프로세서 칩의 종류는 크게Complex Instruction Set Computer(CISC)와Reduced Instruction Set Computer(RISC)로 나뉘는데보통 Intel 계열의 ..

[system programming] Bits, Data Type, and Operations (string 표현, 하드웨어가 소수를 표현하는 방식, feat. floating point)

본 게시글은서울대학교 데이터사이언스대학원 성효진 교수님의데이터사이언스를 위한 컴퓨팅 시스템 강의를학습을 목적으로 재구성하였습니다지난번 시간에 이어두번째 시간string과 float 타입에 대한저장방식에 대한 내용이다  컴퓨터 내에 저장되는 모든 data들은0과 1로 저장된다 우리가 사용하는 컴퓨터 내의 프로그램이라고 하는 것은프로그램의 코드가 저장되어있는 메모리 address에access할 수 있는 0과 1의 data들의 연속이라고 할 수 있다 즉, 한 개의 프로그램은굉장히 커다란 byte 단위의 array들의연속이라고 생각하면 좋다단, 우리가 보기에는 연속적인 공간에 있는 것처럼 보이지만실제 하드웨어적으로 연속은 아니다하지만 conceptual하게 연속적으로 저장되어있다고생각해도 무방하다 개발자인 우리..

[system programming] Bits, Data Types, and Operations (데이터 타입의 비트 표현법과 비트 연산)

본 게시글은서울대학교 데이터사이언스대학원 성효진 교수님의데이터사이언스를 위한 컴퓨팅 시스템 강의를학습을 목적으로 재구성하였습니다오늘은 시스템 프로그래밍 수업의 두 번째 시간컴퓨터에서 가장 기본이 되는데이터 타입과 0과 1만 인식하는 컴퓨터가이러한 데이터 타입을 어떻게 표현하는지에 대한 내용을 배웠다    어떤 프로그램을 컴퓨터로 표현할 때결국 컴퓨터 내부에서는 그 프로그램을 0과 1로 해석한다 이러한 0과 1의 단위를 Bits(비트)라고 하고컴퓨터는 이러한 비트를 어떠한 방식으로 조합하고어떠한 방식으로 표현을 하는지 약속이 되어있다 이번 수업은 비트 표현법의 약속에 대한 내용이고이는 전자적으로 컴퓨터가 정보를 저장하기 위한 방법이다 아래 그래프를 보면 0일 때는 전압이 0.0V에서 0.2V1일 때는 0...

[system programming] Big Picture of System Programming (강의 OT)

본 게시글은 서울대학교 데이터사이언스대학원 정형수 교수님의데이터사이언스를 위한 컴퓨팅 시스템 강의를학습을 목적으로 재구성하였습니다이번 학기에 수강하게된 컴퓨팅 시스템 강의일반적으로는 시스템 프로그래밍이라고 많이 부르는 컴퓨터 과목이다 원래도 난 컴퓨터 시스템이나 컴퓨터 구조와 같은컴퓨터의 low한 내용에 큰 흥미가 있는데이번에 학점 문제로 정규 수강은 못해서청강을 하게 되었다 내 학부인 고려대학교와는 다르게서울대학교는 청강 시스템이 체계적으로 되어있어서참 좋은 것 같다 고려대학교는 그냥 이메일로 교수님께 비는흔히 말하는 빌넣(?) 느낌이었는데서울대학교는 청강신청 시스템이 따로 있고청강이 승인되면 과제나 시험만 의무가 없을 뿐해당 과목을 자유롭게 들을 수 있고모든 수업 자료에도 접근할 수 있다(책임없는 쾌..