[완료]소프트웨어 기능을 하드웨어로 구현한다는 것...

Okidoki의 이미지

임베디드 관련 책을 보다가 떠오른 의문입니다만... 흔히 임베디드 시스템을 디자인할 때 특정 기능을 소프트웨어로 구현할 수도 있고, 하드웨어로 구현할 수도 있다고 하는데 여기서 소프트웨어로 구현할 기능을 하드웨어로 구현한다는 것이 구체적으로 어떤 것(?)인지 잘 모르겠습니다.
소프트웨어를 로우 레벨에서 봐서 메인 프로세서에서 실행되는 인스트럭션의 리스트라고 생각하면, 이 인스트럭션의 일부(기능)를 동일한 작업을 하는 하드웨어 칩(혹은 회로)으로 대체할 수 있다는 말인 것 같은데... 이게 어떤 식으로 가능한 것인지 잘 모르겠네요. 특정 소프트웨어 기능을 하드웨어 칩(논리회로)의 설계도(?)로 만들어주는 알고리즘 같은 게 있는 건가요?
참고로 말씀 드리면 논리회로나 아키텍쳐 쪽으로 썩 자세히 알지 못합니다. 이쪽 공부를 자세히 하면 위 의문의 답을 대강 알 수 있을까요? ^^

snowall의 이미지

소프트웨어는 함수의 집합이고, 함수는 입력과 출력이 있으면 됩니다. 입력이 없어도 아무튼 출력은 있어야겠죠.

그럼 입력이 n비트라고 하면, 0부터 2^n까지의 입력에 대해서 어떤 출력을 내놓을지 다 정해져 있는게 함수입니다.

논리회로를 사용하면 위의 함수를 구현할 수 있습니다. and, or, not게이트를 여러개 조합해서(아니면, 동등하게, nand게이트 여러개를 조합해서) n비트 입력에 대해 출력이 위의 함수와 똑같은 하드웨어 회로를 만들 수 있죠.

피할 수 있을때 즐겨라! http://melotopia.net/b

Okidoki의 이미지

소프트웨어를 함수의 집합으로 이해하는 게 키포인트였던 것 같군요. 소프트웨어 함수로 구현된 기능은 입력에 대한 출력값을 계산하기 위해서 (함수 내부의) 계산을 메인 프로세서가 일일이 해야하지만(메모리의 값을 읽고 쓰는 등), 만약 그 함수를 동일한 출력을 주는 물리적 회로로 구성해 버린 다음, 그 회로쪽으로 입력값을 주게 되면 결과가 한 방(?)에 나오기 때문에 메인 프로세서가 일일이 계산할 때보다 좀 더 빠르게 출력값을 얻을 수 있겠군요...(맞나요..?) 대신 물리적인 회로를 따로 구성했을 때의 단점은 기능을 수정하는 게 어렵고, 추가적인 공간 및 비용이 든다는 것이겠네요. 확실히 이해한 것인지는 모르겠지만 대강의 감은 오는 것 같네요. 아무튼 답변 감사합니다. ^^

익명 사용자의 이미지

매번 회로를 새로 만들어 넣을 수 없기 때문에,
내부에 수많은 AND, OR, NOT 게이트를 담고 있는 FPGA를 사용합니다.
C와 유사한 VHDL 같은 언어로 함수(?)를 구현하고, 컴파일 후 FPGA에 넣어주면,
내장된 AND, OR, NOT 게이트를 조합하여 해당 함수와 동일한 동작을 하는 회로가 구성됩니다.

february28의 이미지

컴퓨터는 계산기 ---> 폰 노이만이 만든 계산기 ---> 튜링이 만든 계산기 ---> 파스칼이 만든 계산기 -->주판(?)
이런 식으로 역사적인 과정을 보면 위대한 인물들의 창조과정과 더불어 그 개념의 한계에대해 좀더 알수 있지않을까 싶네요...
괜히 컴퓨터 관련 서적에 애니악이니 머니 같은 고대유물들의 내용이 들어있는게 아니더라구요...(컴퓨터나 과학,수학이런쪽 보면 사람 갖고노는게 많더라구요..)

--------------------------------------------------------------------------------
open source, open teaching, 천기누설이 꿈~ 은 개뿔...
--------------------------------------------------------------------------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.