[완료]소프트웨어 기능을 하드웨어로 구현한다는 것...
글쓴이: Okidoki / 작성시간: 토, 2012/02/18 - 9:30오후
임베디드 관련 책을 보다가 떠오른 의문입니다만... 흔히 임베디드 시스템을 디자인할 때 특정 기능을 소프트웨어로 구현할 수도 있고, 하드웨어로 구현할 수도 있다고 하는데 여기서 소프트웨어로 구현할 기능을 하드웨어로 구현한다는 것이 구체적으로 어떤 것(?)인지 잘 모르겠습니다.
소프트웨어를 로우 레벨에서 봐서 메인 프로세서에서 실행되는 인스트럭션의 리스트라고 생각하면, 이 인스트럭션의 일부(기능)를 동일한 작업을 하는 하드웨어 칩(혹은 회로)으로 대체할 수 있다는 말인 것 같은데... 이게 어떤 식으로 가능한 것인지 잘 모르겠네요. 특정 소프트웨어 기능을 하드웨어 칩(논리회로)의 설계도(?)로 만들어주는 알고리즘 같은 게 있는 건가요?
참고로 말씀 드리면 논리회로나 아키텍쳐 쪽으로 썩 자세히 알지 못합니다. 이쪽 공부를 자세히 하면 위 의문의 답을 대강 알 수 있을까요? ^^
Forums:
소프트웨어는 함수의 집합이고, 함수는 입력과 출력이
소프트웨어는 함수의 집합이고, 함수는 입력과 출력이 있으면 됩니다. 입력이 없어도 아무튼 출력은 있어야겠죠.
그럼 입력이 n비트라고 하면, 0부터 2^n까지의 입력에 대해서 어떤 출력을 내놓을지 다 정해져 있는게 함수입니다.
논리회로를 사용하면 위의 함수를 구현할 수 있습니다. and, or, not게이트를 여러개 조합해서(아니면, 동등하게, nand게이트 여러개를 조합해서) n비트 입력에 대해 출력이 위의 함수와 똑같은 하드웨어 회로를 만들 수 있죠.
피할 수 있을때 즐겨라! http://melotopia.net/b
답변 감사합니다.
소프트웨어를 함수의 집합으로 이해하는 게 키포인트였던 것 같군요. 소프트웨어 함수로 구현된 기능은 입력에 대한 출력값을 계산하기 위해서 (함수 내부의) 계산을 메인 프로세서가 일일이 해야하지만(메모리의 값을 읽고 쓰는 등), 만약 그 함수를 동일한 출력을 주는 물리적 회로로 구성해 버린 다음, 그 회로쪽으로 입력값을 주게 되면 결과가 한 방(?)에 나오기 때문에 메인 프로세서가 일일이 계산할 때보다 좀 더 빠르게 출력값을 얻을 수 있겠군요...(맞나요..?) 대신 물리적인 회로를 따로 구성했을 때의 단점은 기능을 수정하는 게 어렵고, 추가적인 공간 및 비용이 든다는 것이겠네요. 확실히 이해한 것인지는 모르겠지만 대강의 감은 오는 것 같네요. 아무튼 답변 감사합니다. ^^
그래서 FPGA를 사용합니다.
매번 회로를 새로 만들어 넣을 수 없기 때문에,
내부에 수많은 AND, OR, NOT 게이트를 담고 있는 FPGA를 사용합니다.
C와 유사한 VHDL 같은 언어로 함수(?)를 구현하고, 컴파일 후 FPGA에 넣어주면,
내장된 AND, OR, NOT 게이트를 조합하여 해당 함수와 동일한 동작을 하는 회로가 구성됩니다.
같은 맥락으로 받아들여질지는 모르겠지만...
컴퓨터는 계산기 ---> 폰 노이만이 만든 계산기 ---> 튜링이 만든 계산기 ---> 파스칼이 만든 계산기 -->주판(?)
이런 식으로 역사적인 과정을 보면 위대한 인물들의 창조과정과 더불어 그 개념의 한계에대해 좀더 알수 있지않을까 싶네요...
괜히 컴퓨터 관련 서적에 애니악이니 머니 같은 고대유물들의 내용이 들어있는게 아니더라구요...(컴퓨터나 과학,수학이런쪽 보면 사람 갖고노는게 많더라구요..)
--------------------------------------------------------------------------------
open source, open teaching, 천기누설이 꿈~ 은 개뿔...
--------------------------------------------------------------------------------
댓글 달기