Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chapter02: 명령어, 컴퓨터 언어 # (번역계층 (Linker (DLL (실제로 호출되는 것만 링킹 (간접 점프)),…
-
-
-
-
-
Q1. 폰 노이만 구조 상으로 blt(branch less than)을 만들지 않는다고 한다. 이는 곧 CISC보다 RISC가 폰 노이만 구조에 더 적합하는 것을 의미하는 것이라고 생각한다. 하지만 아직도 Intel은 CISC 방식의 CPU를 생산해내고 있다. CISC가 현대 컴퓨터 구조인 폰 노이만 구조와 적합하자 않아보임에도 성장할 수 있었던 것은 Intel이라는 브랜드 덕분인 것인가 아니면 CISC가 가지는 장점 덕분인가. 분명 RISC로 명령어를 조합하는 것이 빠름에도 불구하고 CISC가 현재 까지 유지되는 이유는 무엇인가.
THINKING. 아마 CISC 방식으로 지금까지 유지된 것을 다시 RISC 방식으로 바꾸는 것이 어려운 것 아닐까. 기존의 시스템을 뒤집는 것은 많은 비용이 든다. 따라서 새로 시스템을 바꾸는 것보다 기존의 CISC 개념을 유지하고 RISC 개념을 보완하는 것으로 Intel이 절충한 것인듯 하다. 이는 trade-off와 관계된 개념으로서 모든 선택에 기회비용이 존재함을 의미한다.
Q2_1. 분기와 관련하여서 최근 Intel CPU의 취약점인 meltdown이 제기되었다. brach를 어떻게 처리하는 지와 Intel CPU의 취약점은 어떤 상관관계가 있는 것인가.
THINKING. Intel CPU의 취약점에는 meltdown과 sprctre가 있다고 말한다. 이는 모두 컴퓨터 아키텍처의 위대한 아이디어 8가지 중 Prediction(예측)과 관계되어 있다. 예측은 If 문에서 조건을 미리 옳다고 가정하고 안에 있는 명령을 실행한다. 이 과정에서 조건이 '참'으로 만족하면 문제가 없다. 만약 '거짓'이라면 준비중인 데이터를 지우고 다시 명령을 실행해야 하는데 캐시에 올라가 있던 데이터에 대한 접근 권한 문제로 인해 정보가 유출될 수 있다. 이를 Meltdown 이라고 말한다. Spectre는 분기를 악의적으로 조작하여서 정보를 유출하는 방향으로 유도한다. 이 두 취약점 모두 분기 명령과 관련해서 나온다.
-
THINKING. 예측을 할 때 가능성이 높은 것을 미리 판단해서 분기할 수 있을까. 프로그래머 입장에서 가능성이 높은 조건을 사용해서 if 안에 작성하도록 한다면 CPU의 빠른 처리를 위한 정상적인 프로세스가 작동하지 않을까. 동시에 하드웨어 적으로 CPU가 잘못된 방향으로 분기했을 때 이를 조정할 수 있는 메커니즘을 가지고 있다면 위의 문제를 해결할 수 있지 않을까.
-
THINKING. 알고리즘과도 관련된 문제인 것 같다. 컴퓨터의 명령어 집합은 곧 알고리즘을 실행하기 위한 하위 모델로서 추상화를 통해 가려져 있기 때문이다. 상위 알고리즘에서 주어진 것을 명령어 집합으로 변환 시킬 뿐 명령어 집합 자체가 문제 해결에 있어서 주요한 역할을 하는 것처럼 보이지 않는다. 결국 질문은 모든 문제에 대한 알고리즘이 존재할 것인가로 바뀌게 된다면 이에 대해서 장담할 수 없다는 입장으로 나아갈 듯 하다.
Q4. 번역 과정의 발달은 자연어 프로그래밍도 가능한 수준에 이를 수 있을까. 자연어로 프로그래밍을 한다면 인간의 직관에 가까운 프로그래밍 결과를 얻을 수 있지 않을까. 코딩을 하는 과정이 다소 기계적인 생각에서 벗어나지를 못하는 것 같다. 컴퓨터가 처리할 수 있도록 모든 변수를 설정하고 이를 정해진 문법 규칙에 맞게 작성해내야 하는데 자연어로 프로그래밍을 한다면 더 인간의 창의성을 바탕으로 더 많은 문제를 해결하는 데 도움이 되지 않을까.
THINKING. 자연어 처리 기술의 발달을 통해서 컴퓨터가 자연어를 이해하고 이에 맞게 처리하는 수준에는 이른 것 같다. 하지만 소프트웨어 제작을 자연어로 하는 것은 아직 보지 못했다. 이는 개발자집단이 이미 프로그래밍 언언에 익숙한 상황이기 때문에 사용하는 언어를 더욱 자연어와 비슷하게 만드는 과정을 중요시 여기지 않는 듯하다. 완전한 자연어 프로그래밍은 아니더라도 영미 중심의 프로그래밍 언어에 대한 문제는 인식하고 있는 것 같다. 구글 개발자는 인도 타밀어로 프로그래밍을 하는 클러져타밀을 개발했다고 한다. 완전한 자연어는 아니더라도 점차 자연어와 비슷해져 가는 프로그래밍 언어의 발달을 살펴보면 번역 계층에 있어서 하나의 레이어가 더 생기지 않을까 생각해본다.