Filewatcher File Search
FTP Search
  
Directory 
  
Content Search 
   
pkg://Parallel-Processing-HOWTO-html.tar.gz:76146/Parallel-Processing-HOWTO-4.html  downloads

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Linux Parallel Processing HOWTO: ÇϳªÀÇ ·¹Áö½ºÅÍÀ§¿¡¼­ÀÇ SIMD(¿¹: MMX »ç¿ë)</TITLE>
 <LINK HREF="Parallel-Processing-HOWTO-5.html" REL=next>
 <LINK HREF="Parallel-Processing-HOWTO-3.html" REL=previous>
 <LINK HREF="Parallel-Processing-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="Parallel-Processing-HOWTO-5.html">´ÙÀ½</A>
<A HREF="Parallel-Processing-HOWTO-3.html">ÀÌÀü</A>
<A HREF="Parallel-Processing-HOWTO.html#toc4">Â÷·Ê</A>
<HR>
<H2><A NAME="s4">4. ÇϳªÀÇ ·¹Áö½ºÅÍÀ§¿¡¼­ÀÇ SIMD(¿¹: MMX »ç¿ë)</A></H2>

<P>
<P>´ÜÀÏ ·¹Áö½ºÅÍ ³»ÀÇ SIMD(SWAR)´Â »õ·Î¿î ¾ÆÀ̵ð¾î°¡ ¾Æ´Ï´Ù.
<EM>k</EM>-ºñÆ® ·¹Áö½ºÅÍ, µ¥ÀÌÅÍ ÆÐ½º, ±×¸®°í ÇÔ¼ö À¯´Ö À» °¡Áö´Â ±â°è°¡
ÀÖÀ» ¶§ ÀÏ¹Ý ·¹Áö½ºÅÍ ¿¬»êµéÀÌ <EM>n</EM>°³ÀÇ <EM>k</EM>/<EM>n</EM>-ºñÆ®,
Á¤¼ö ÇÊµå °ªµé À§¿¡¼­ SIMD º´·Ä ¿¬»êµé·Î ¼öÇàµÉ ¼ö ÀÖ´Ù´Â °ÍÀÌ
¿À·¡ÀüºÎÅÍ ¾Ë·ÁÁ® ¿Ô´Ù. ±×·¯³ª SWAR ±â¼úµé¿¡ ÀÇÇØ¼­ Á¦°øµÇ´Â 2¹è¿¡¼­
8¹è±îÁöÀÇ ¼Óµµ Áõ°¡°¡ ¸ÞÀνºÆ®¸² ÄÄÇ»ÆÃ¿¡ ´ëÇÑ °ü½É»ç°¡ µÈ °ÍÀº ¿äÁòµé¾î
¸ÖƼ¹Ìµð¾î¿¡ ´ëÇÑ °­·ÄÇÑ Ãß¼¼¶§¹®ÀÌ´Ù. ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­µéÀÇ 1997 ¹öÀü
´ëºÎºÐÀº SWAR¿¡ ´ëÇÑ Çϵå¿þ¾î Áö¿øÀ» ´ã°í ÀÖ´Ù:
<P>
<UL>
<LI>
<A HREF="http://www.amd.com/html/products/pcd/techdocs/appnotes/20726a.pdf">AMD K6 MMX (MultiMedia eXtensions)</A>
</LI>
<LI>
<A HREF="http://www.cyrix.com:80/process/SUPPORT/isv.htm">Cyrix M2 MMX (MultiMedia eXtensions)</A>
</LI>
<LI>
<A HREF="http://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphahb2.pdf">Digital Alpha MAX (MultimediA eXtensions)</A>
</LI>
<LI>
<A HREF="http://hpcc997.external.hp.com:80/wsg/strategies/pa2go3/pa2go3.html">Hewlett-Packard PA-RISC MAX (Multimedia Acceleration eXtensions)</A>
</LI>
<LI>
<A HREF="http://developer.intel.com/drg/mmx/">Intel Pentium II &amp; Pentium with MMX (MultiMedia eXtensions)</A>
</LI>
<LI>
<A HREF="http://www.microunity.com/www/mediaprc.htm">Microunity Mediaprocessor SIGD (Single Instruction on Groups of Data)</A>
</LI>
<LI>
<A HREF="http://www.mips.com/arch/ISA5/">MIPS Digital Media eXtension (MDMX, pronounced Mad Max)</A>
</LI>
<LI>
<A HREF="http://www.sun.com/sparc/vis/index.html">Sun SPARC V9 VIS (Visual Instruction Set)</A></LI>
</UL>
<P>»õ·Î¿î ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­µé¿¡ ÀÇÇØ¼­ Á¦°øµÇ´Â Çϵå¿þ¾î Áö¿ø¿¡´Â ¸î°¡Áö
°áÇÔµéÀÌ ÀÖ°í ¾î¶² Çʵå Å©±âµé¿¡ ´ëÇØ¼­ ¾î¶² ¿¬»êµé¸¸À» Áö¿øÇÏ´Â °Í°ú
°°Àº ´ÜÁ¡ÀÌ ÀÖ´Ù. ±×·¯³ª ¸¹Àº SWAR ¿¬»êµéÀÌ È¿À²ÀûÀ̾î¾ß ÇÏ´Â Çϵå¿þ¾î
Áö¿øÀÌ ÇÊ¿ä¾ø´Ù´Â °ÍÀ» ±â¾ïÇÏ´Â °ÍÀÌ Áß¿äÇÏ´Ù. ¿¹¸¦ µé¾î¼­ ºñÆ®´ÜÀ§
¿¬»êµéÀº ÇϳªÀÇ ·¹Áö½ºÅ͸¦ ³í¸®ÀûÀ¸·Î ºÐÇÒÇÏ´Â °Í¿¡ ÀÇÇØ¼­ ¿µÇâÀ» ¹ÞÁö
¾Ê´Â´Ù.
<P>
<H2><A NAME="ss4.1">4.1 SWAR: ¾îµð¿¡ ÁÁÀº °ÍÀ̰¡(What Is It Good For)?</A>
</H2>

<P>
<P>ºñ·Ï <EM>¸ðµç</EM> ÇöÀç ÇÁ·Î¼¼¼­µéÀÌ Àû¾îµµ ¾î´ø SWAR º´·Ä
±â´É(parallelism)°ú ÇÔ²² ¼öÇàÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù°í ÇÏ´õ¶óµµ °¡Àå ÁÁÀº
SWAR-°³¼± ¸í·É ¼Âµéµµ ¾ÆÁÖ ÀϹÝÀûÀÎ-¸ñÀûÀÇ º´·Ä ±â´É(parallelism)À»
Áö¿øÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÌ ½½Ç »ç½ÇÀÌ´Ù. »ç½Ç, ¸¹Àº »ç¶÷µéÀÌ Pentium°ú
"Pentium with MMX technology" »çÀÌÀÇ ¼öÇà ´É·Â Â÷À̰¡ ¿ì¿¬È÷µµ MMX¿Í
µ¿½Ã¿¡ ³ªÅ¸³­ ´õ Å« L1 ij½¬¿Í °°Àº °Íµé ¶§¹®À̶ó°í »ý°¢ÇÑ´Ù. ±×·¸´Ù¸é
SWAR(Áï MMX)´Â Çö½ÇÀûÀ¸·Î ¾îµð¿¡ ÁÁÀº °ÍÀΰ¡?
<P>
<UL>
<LI>Á¤¼öµé¸¸ ÀÖ´Â °ÍÀÌ, ´õ ÀûÀº °ÍÀÌ ´õ ÁÁ´Ù. 32-ºñÆ® °ªµéÀº 64-ºñÆ®
MMX ·¹Áö½ºÅÍ¿¡ ¸Â¾Æ ¶³¾îÁöÁö¸¸ 8°³ÀÇ 1-¹ÙÀÌÆ® ¹®ÀÚµéÀ̳ª 1-ºñÆ®°ªµéÀÇ
ü½ºÆÇ Å©±â(ü½ºÆÇÀº °¡·Î ¼¼·Î 8°³¾¿ÀÇ Ä­ÀÌ ÀÖ´Ù. ±×·¡¼­ 64°³;
¿ªÀÚÁÖ) °³¼ö ÀüüÀÌ´õ¶óµµ ¸Â¾Æ ¶³¾îÁø´Ù.

Note: ÀÌ ±ÛÀ» ¾²°í ÀÖ´Â ¼ø°£ ºñ·Ï ¸¹Àº ³»¿ëÀÌ ¾øÁö¸¸ <EM>MMXÀÇ
ºÎµ¿-¼Ò¼ýÁ¡ ¹öÀüÀÌ ÀÖÀ»</EM> °ÍÀÌ´Ù. Cyrix´Â <B>MMFP</B>¿¡ ´ëÇÑ ¸î°¡Áö
¼³¸íÀ» ´ãÀº ½½¶óÀ̵åµéÀ» 
<A HREF="ftp://ftp.cyrix.com/developr/mpf97rm.pdf">ftp://ftp.cyrix.com/developr/mpf97rm.pdf</A>¿¡ Æ÷½ºÆÃÇØ³õ¾Ò´Ù. ¾ó¸¥
ºÁ¼­ MMFP´Â µÎ 32-ºñÆ® ºÎµ¿-¼Ò¼ýÁ¡ ¼ýÀÚµéÀÌ 64-ºñÆ® MMX ·¹Áö½ºÅÍ Çϳª¿¡
ÆÑÅ·µÇ´Â °ÍÀ» Áö¿øÇÒ °ÍÀÌ´Ù; À̰ÍÀ» µÎ°³ÀÇ MMFP ÆÄÀÌÇÁ¶óÀεé·Î ¹­À¸¸é
Ŭ·° Çϳª´ç ³×°³ÀÇ ´ÜÀÏ-Á¤¹Ðµµ FLOP¸¦ »ý»êÇÒ °ÍÀÌ´Ù.
</LI>
<LI>SIMD, ¶Ç´Â º¤ÅÍ-½ºÅ¸ÀÏ º´·Ä ó¸®(parallelism). µ¿ÀÏÇÑ ¿¬»êÀÌ ¸ðµç
Çʵåµé¿¡ µ¿½Ã¿¡ Àû¿ëµÈ´Ù. ¼±ÅÃµÈ Çʵåµé¿¡ È¿°ú¸¦ ¾ø¾Ö´Â ¹æ¹ýµé(Áï, SIMD
enable ¸¶½ºÅ·)ÀÌ Á¸ÀçÇÏÁö¸¸ ±×µéÀº º¹ÀâÇÏ°í ¼º´ÉÀ» ÀúÇϽÃŲ´Ù.
</LI>
<LI>Áö¿ªÈ­(localized)µÇ°í Á¤±ÔÀûÀÎ(¿ÀÈ÷·Á ÆÑÅ·µÈ), ¸Þ¸ð¸® ÂüÁ¶ ÆÐÅϵé.
ÀϹÝÀûÀÎ SWAR, ±×¸®°í Ưº°È÷ MMX, ´Â ·£´ý-¼ø¼­ Á¢±Ù¿¡ Áã¾àÀÌ´Ù; º¤ÅÍ
<CODE>x[y]</CODE>(¿©±â¼­ <CODE>y</CODE>´Â À妽º ¹è¿­ÀÌ´Ù)¸¦ ¸ðÀ¸´Â °ÍÀº ¾öû
ºñ½Î´Ù.</LI>
</UL>
<P>À̵éÀº ½É°¢ÇÑ Á¦¾àÁ¡µéÀÌÁö¸¸ ÀÌ·± ŸÀÔÀÇ º´·Ä 󸮴 ¸¹Àº º´·Ä
¾Ë°í¸®Áòµé¿¡¼­ ³ªÅ¸³ª´Â °ÍÀÌ´Ù - ¸ÖƼ¹Ìµð¾î ¾îÇø®ÄÉÀ̼ǵé»Ó¸¸ÀÌ ¾Æ´Ï°í.
¾Ë°í¸®ÁòÀÇ ÀûÀýÇÑ Å¸ÀÔ¿¡ ´ëÇØ¼­ SWAR´Â SMP³ª Ŭ·¯½ºÅÍ º´·Ä 󸮺¸´Ù ÈξÀ
È¿À²ÀûÀÌ´Ù... ±×¸®°í À̰ÍÀº ±×°ÍÀ» »ç¿ëÇÏ´Â µ¥ ¾î¶² Ãß°¡ ºñ¿ëµµ µéÁö
¾Ê´Â´Ù.
<P>
<H2><A NAME="ss4.2">4.2 SWAR ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼Ò°³(Introduction To SWAR Programming)</A>
</H2>

<P>
<P>SWARÀÇ ±âº» °³³ä(ÄÁ¼Á), ´ÜÀÏ ·¹Áö½ºÅÍ ¾È¿¡¼­ÀÇ SIMD, ´Â ¿öµå-±æÀÌ
·¹Áö½ºÅ͵é À§¿¡¼­ÀÇ ¿¬»êµéÀÌ <EM>n</EM>°³ÀÇ <EM>k</EM>/<EM>n</EM>-ºñÆ®
ÇÊµå ¼öÄ¡µé¿¡ ´ëÇÑ SIMD º´·Ä ¿¬»êÀ» ¼öÇàÇÔÀ¸·Î½á °è»ê ¼Óµµ¸¦ ³ôÀÌ´Â µ¥
»ç¿ëµÉ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ±×·¯³ª SWAR ±â¼úÀ» »ç¿ëÇÏ´Â °ÍÀº ´Ù¼Ò ¾î»öÇÒ ¼ö
ÀÖÀ¸¸ç ¶ÇÇÑ ¾î¶² SWAR ¿¬»êµéÀº ½ÇÁ¦ ´ëÀÀµÇ´Â ÀÏ·ÃÀÇ ¼øÂ÷ÀûÀÎ ¿¬»êµéº¸´Ù,
±×µéÀÌ ÇÊµå ºÐÇÒÀ» ¼öÇàÇÏ´Â Ãß°¡ÀÇ ¸í·É¾îµéÀ» ¿ä±¸Çϱ⠶§¹®¿¡, ´õ
°í ºñ¿ëÀÌ´Ù.
<P>ÀÌ °üÁ¡À» ¿¹½ÃÇϱâ À§Çؼ­ »ó´çÈ÷ ´Ü¼øÈ­µÈ, °¢ 32-ºñÆ® ·¹Áö½ºÅÍ ¾È¿¡¼­
4°³ÀÇ 8-ºñÆ® ÇʵåµéÀ» °ü¸®ÇÏ´Â, SWAR ¸ÞÄ«´ÏÁòÀ» »ý°¢Çغ¸µµ·Ï ÇÏÀÚ. µÎ
·¹Áö½ÃÅ͵é¾ÈÀÇ ¼öÄ¡µéÀº ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ°Ú´Ù:
<P>
<HR>
<PRE>
         PE3     PE2     PE1     PE0
      +-------+-------+-------+-------+
Reg0  | D 7:0 | C 7:0 | B 7:0 | A 7:0 |
      +-------+-------+-------+-------+
Reg1  | H 7:0 | G 7:0 | F 7:0 | E 7:0 |
      +-------+-------+-------+-------+
</PRE>
<HR>
<P>À̰ÍÀº ´Ü¼øÇÏ°Ô °¢ ·¹Áö½ºÅͰ¡ ±âº»ÀûÀ¸·Î 4°³ÀÇ µ¶¸³ 8-ºñÆ® Á¤¼ö ¼öÄ¡µéÀÇ
º¤ÅÍ·Î º¼ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¶Ç´Â Ç׸ñ 0 (PE0)¸¦ ó¸®ÇÏ´Â Reg0¿Í
Reg1¿¡ ÀÖ´Â ¼öÄ¡µé·Î½á <CODE>A</CODE>¿Í <CODE>E</CODE>¸¦, ±×¸®°í PE1ÀÇ
·¹Áö½ºÅ͵鿡 ÀÖ´Â ¼öÄ¡µé·Î½á <CODE>B</CODE>°ú <CODE>F</CODE>¸¦, ±×¸®°í °è¼Ó ÀÌ·±
½ÄÀ¸·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù.
<P>ÀÌ ¹®¼­ÀÇ ³ª¸ÓÁö ºÎºÐÀº ÀÌ·± Á¤¼ö º¤Å͵鿡 ´ëÇÑ SIMD º´·Ä ¿¬»êÀ» À§ÇÑ
±âº» Ŭ·¡½ºµé°ú À̵éÀÇ ÇÔ¼öµéÀÌ ¾î¶»°Ô ±¸ÇöµÉ ¼ö ÀÖ´Â °¡¿¡ ´ëÇØ¼­
´ë·«ÀûÀ¸·Î ¸®ºäÇÒ °ÍÀÌ´Ù.
<P>
<H3>´ÙÇü¼º ¿¬»ê(Polymorphic Operations)</H3>

<P>
<P>¾î¶² SWAR ¿¬»êµéÀº, ÀÌ ¿¬»êÀÌ ½ÇÁ¦ ÀÌ·± 8-ºñÆ® Çʵåµé¿¡ º´·Ä·Î ¼­·Î
µ¶¸³ÀûÀ¸·Î °è»êµÇµµ·Ï ÀǵµµÇ¾ú´Ù´Â »ç½Ç¿¡ ½Å°æ¾²Áö ¾Ê°í¼­ ÀÏ¹Ý 32-ºñÆ®
Á¤¼ö ¿¬»êµéÀ» »ç¿ëÇØ¼­ ½±°Ô ¼öÇàµÉ ¼ö ÀÖ´Ù. ¿ì¸®´Â ÀÓÀÇÀÇ ÀÌ·± SWAR
¿¬»êµéÀ» <EM>´ÙÇü¼º(polymorphic)</EM>À̶ó°í ºÎ¸¥´Ù. ¿Ö³Ä¸é ÀÌ ±â´ÉÀÌ
Çʵå ŸÀÔµé(Å©±âµé)¿¡ ÀÇÇØ¼­ ¿µÇâÀ» ¹ÞÁö ¾Ê±â ¶§¹®ÀÌ´Ù.
<P>ÀÓÀÇÀÇ Çʵ尡 ¿µÀÌ ¾Æ´Ñ°¡¸¦ Å×½ºÆ®ÇÏ´Â °ÍÀº ´ÙÇü¼ºÀÌ´Ù. ±×¸®°í ¸ðµç
ºñÆ®´ÜÀ§ ³í¸® ¿¬»êµéµµ ±×·¸´Ù. ¿¹¸¦ µé¾î¼­ ÀÏ¹Ý ºñÆ®´ÜÀ§ and ³í¸®
¿¬»ê(CÀÇ <CODE>&amp;</CODE> ¿¬»êÀÚ)Àº ºñÆ®´ÜÀ§·Î ¼öÇàÇÏ°í ±× Çʵå Å©±â°¡
¾ó¸¶³ª µÇ´ÂÁö¿¡ ½Å°æ¾²Áö ¾Ê´Â´Ù. À§ ·¹Áö½ºÅ͵éÀÇ ´Ü¼øÇÑ ºñÆ®´ÜÀ§ and
¿¬»ê °á°ú´Â ´ÙÀ½°ú °°Àº °á°ú¸¦ ¸¸µé¾î ³½´Ù:
<P>
<HR>
<PRE>
          PE3       PE2       PE1       PE0
      +---------+---------+---------+---------+
Reg2  | D&amp;H 7:0 | C&amp;G 7:0 | B&amp;F 7:0 | A&amp;E 7:0 |
      +---------+---------+---------+---------+
</PRE>
<HR>
<P>ºñÆ®´ÜÀ§ and ¿¬»êÀº Ç×»ó ¿¬»ê´ë»ó ºñÆ® <EM>k</EM> ¼öÄ¡µé¿¡ ÀÇÇØ¼­¸¸
¿µÇâÀ» ¹Þ´Â °á°ú ºñÆ® <EM>k</EM>ÀÇ ¼öÄ¡¸¦ °¡Áö±â ¶§¹®¿¡ ¾î¶² Çʵå
Å©±â¶óµµ µ¿ÀÏÇÑ ´ÜÀÏ ¸í·É¿¡ ÀÇÇØ¼­ Áö¿ø¹Þ´Â´Ù.
<P>
<H3>ºÐÇÒµÈ ¿¬»ê(Partitioned Operations)</H3>

<P>
<P>ºÒÇàÇϰԵµ ¸¹Àº Áß¿äÇÑ SWAR ¿¬»êµéÀÌ ´ÙÇü¼ºÀÌ ¾Æ´Ï´Ù. ´õÇϱâ, »©±â,
°öÇϱâ, ³ª´©±â µî°ú °°Àº »çÄ¢¿¬»êµéÀº ¸ðµÎ Çʵåµé°£ÀÇ
ÀÚ¸®¿Ã¸²(carry)/ºô·Á¿È(borrow) »óÈ£ÀÛ¿ëÀ» ÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ¿ì¸®´Â ÀÌ·±
SWAR ¿¬»êµéÀ» <EM>ºÐÇÒµÈ(partitioned)</EM> °ÍÀ̶ó°í ºÎ¸¥´Ù. ¿Ö³Ä¸é °¢
¿¬»êÀÌ ¹Ýµå½Ã ¿¬»ê´ë»óµéÀ» È¿À²ÀûÀ¸·Î ºÐÇÒÇØ¾ß Çϰí Çʵåµé °£ÀÇ
»óÈ£ÀÛ¿ëÀ» ¸·¾Æ¾ß Çϱ⠶§¹®ÀÌ´Ù. ±×·¯³ª ÀÌ·± È¿°ú¸¦ ¾ò´Â µ¥ »ç¿ëµÉ ¼ö
ÀÖ´Â ¼¼°¡Áö ¼­·Î ´Ù¸¥ ¹æ¹ýµéÀÌ Á¸ÀçÇÑ´Ù.
<P>
<H3>ºÐÇÒµÈ ¸í·É¾î(Partitioned Instructions)</H3>

<P>
<P>ºÐÇÒµÈ ¿¬»êµéÀ» ±¸ÇöÇÏ´Â °¡Àå ¸í¹éÇÑ Á¢±Ù¹ýÀº Çʵåµé °£ÀÇ carry/borrow
³í¸®¸¦ ÀÚ¸£´Â "ºÐÇÒµÈ º´·Ä ¸í·É¾î"¿¡ ´ëÇÑ Çϵå¿þ¾î Áö¿øÀ» Á¦°øÇÏ´Â
°ÍÀÌ´Ù. ÀÌ·± Á¢±ÙÀº ÃÖ°íÀÇ ¼º´ÉÀ» ³»Áö¸¸ ÇÁ·Î¼¼¼­ÀÇ ¸í·É ÁýÇÕÀ» º¯°æÇؾß
Çϰí ÀϹÝÀûÀ¸·Î Çʵå Å©±â¿¡ ¸¹Àº Á¦ÇѵéÀÌ ÀÖ´Ù(¿¹, 8-ºñÆ® ÇʵåµéÀÌ
Áö¿øµÉ ¼ö ÀÖÁö¸¸ 12-ºñÆ® ÇʵåµéÀº ±×·¸Áö ¸øÇÑ °æ¿ì).
<P>AMD/Cyrix/Intel MMX, Digital MAX, HP MAX, ±×¸®°í Sun VIS´Â ¸ðµÎ ºÐÇÒ
¸í·ÉµéÀÇ Á¦ÇÑµÈ ¹öÀüµéÀ» ±¸ÇöÇÑ °ÍµéÀÌ´Ù. ºÒÇàÇϰԵµ ÀÌ·± ¼­·Î ´Ù¸¥ ¸í·É
¼Â È®ÀåµéÀº Áß¿äÇÑ ´Ù¸¥ Á¦¾àµéÀ» °¡Áö±â ¶§¹®¿¡ ±×µé°£¿¡ ¾Ë°í¸®ÁòµéÀÌ
¼­·Î Æ÷ÆÃµÉ ¼ö ¾ø°Ô ¸¸µç´Ù. ¿¹¸¦ µé¾î¼­ ´ÙÀ½°ú °°Àº ºÐÇÒµÈ ¿¬»êÀÇ
»ùÇøµÀ» »ý°¢Çغ¸ÀÚ:
<P>
<HR>
<PRE>
  Instruction           AMD/Cyrix/Intel MMX   DEC MAX   HP MAX   Sun VIS
+---------------------+---------------------+---------+--------+---------+
| Absolute Difference |                     |       8 |        |       8 |
+---------------------+---------------------+---------+--------+---------+
| Merge Maximum       |                     |   8, 16 |        |         |
+---------------------+---------------------+---------+--------+---------+
| Compare             |           8, 16, 32 |         |        |  16, 32 |
+---------------------+---------------------+---------+--------+---------+
| Multiply            |                  16 |         |        |    8x16 |
+---------------------+---------------------+---------+--------+---------+
| Add                 |           8, 16, 32 |         |     16 |  16, 32 |
+---------------------+---------------------+---------+--------+---------+
</PRE>
<HR>
<P>ÀÌ Å×ÀÌºí¿¡¼­ ¼ýÀÚµéÀº °¢ ¿¬»êÀÌ Áö¿øµÇ´Â Çʵå Å©±âµéÀ» ºñÆ® ´ÜÀ§·Î
³ªÅ¸³½ °ÍÀÌ´Ù. ºñ·Ï ÀÌ Å×À̺íÀÌ Á» ´õ ÈǸ¢ÇÑ °ÍµéÀ» Æ÷ÇÔÇÑ ¸¹Àº ¸í·ÉµéÀ»
»ý·«ÇÑ °ÍÀ̱â´Â ÇÏÁö¸¸ ¸¹Àº Â÷À̰¡ ÀÖ´Ù´Â °ÍÀº ºÐ¸íÇÑ »ç½ÇÀÌ´Ù.
ÀÌÀÇ Á÷Á¢ÀûÀÎ °á°ú´Â °í-¼öÁØ ¾ð¾îµé(High-Level Languages; HLLs)°¡ ½ÇÁ¦·Î
ÇÁ·Î±×·¡¹Ö ¸ðµ¨·Î½á ¾ÆÁÖ ÀûÇÕÇÑ °ÍÀº ¾Æ´Ï´Ù¶ó´Â °Í°ú Æ÷ÆÃÀÌ ÀϹÝÀûÀ¸·Î
¾ÆÁÖ ³ª»Ú´Ù´Â °ÍÀÌ´Ù.
<P>
<H3>±³Á¤ Äڵ带 °¡Áö´Â ºÐÇÒµÇÁö ¾ÊÀº ¿¬»ê(Unpartitioned Operations                With Correction Code)</H3>

<P>
<P>ºÐÇÒ ¸í·É¾îµéÀ» »ç¿ëÇØ¼­ ºÐÇÒ ¿¬»êµéÀ» ±¸ÇöÇÏ´Â °ÍÀº ºÐ¸íÈ÷ È¿À²ÀûÀÏ ¼ö
ÀÖÁö¸¸ ÇÊ¿äÇÑ ºÐÇÒ ¿¬»êÀÌ Çϵå¿þ¾î¿¡ ÀÇÇØ¼­ Áö¿øµÇÁö ¾ÊÀ¸¸é ¾î¶»°Ô ÇÒ
°ÍÀΰ¡? ÇØ´äÀº Çʵ尣 carry/borrowÀ» °¡Áø ¿¬»êµéÀ» ÀÏ¹Ý ¸í·É¾îµéÀ»
»ç¿ëÇØ¼­ ¼öÇàÇÏ°í ¿øÇÏÁö ¾Ê´Â ÇÊµå »óÈ£ÀÛ¿ëÀ» ±³Á¤ÇÏ´Â °ÍÀÌ´Ù. 
<P>À̰ÍÀº ¼øÀüÈ÷ ¼ÒÇÁÆ®¿þ¾î·Î Á¢±ÙÇÏ´Â °ÍÀÌ°í ±³Á¤ÀÛ¾÷Àº ¿À¹öÇìµå¸¦
ÀÏÀ¸Å°Áö¸¸ ¿ÏÀüÈ÷ ÀϹÝÀûÀÎ ÇÊµå ºÐÇÒ·Î Àß ÀÛµ¿ÇÑ´Ù. ÀÌ·± Á¢±Ù¹ýÀº
ºÐÇÒ ¸í·É¿¡ ´ëÇÑ Çϵå¿þ¾î Áö¿øÀÇ °¸µéÀ» ä¿ì´Â µ¥ »ç¿ëµÉ ¼ö Àְųª
¾Æ´Ï¸é Çϵå¿þ¾î Áö¿øÀ» ÀüÇô ÇÏÁö ¾Ê´Â Ÿ°Ù ±â°èµé¿¡ ´ëÇØ¼­ ¿ÏÀüÇÑ ±â´ÉÀ»
Á¦°øÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ ¶ÇÇÑ ¿ÏÀüÈ÷ ÀϹÝÀûÀÌ´Ù. »ç½Ç C¿Í
°°Àº ¾ð¾î·Î ÄÚµå ½ÃÄö½ºµéÀ» Ç¥ÇöÇÔÀ¸·Î½á ÀÌ·± Á¢±Ù¹ýÀº SWAR ÇÁ·Î±×·¥µéÀÌ
¿ÏÀüÈ÷ Æ÷ÆÃ °¡´ÉÇÑ °ÍÀ¸·Î ¸¸µç´Ù.
<P>±×·¸´Ù¸é ´ÙÀ½°ú °°Àº Áú¹®ÀÌ ¹Ù·Î »ý±ä´Ù: ºñºÐÇÒ ¿¬»êµéÀ» ±³Á¤ ÄÚµå·Î
SWAR ºÐÇÒ ¿¬»êµéÀ» ½Ã¹°·¹À̼ÇÇÏ´Â °ÍÀÌ Á¤È®È÷ ¾ó¸¶³ª ºñÈ¿À²ÀûÀΰ¡? ±Û½ê
À̰ÍÀº È®½ÇÈ÷ $64k ¹®Á¦ÀÌ´Ù... ÇÏÁö¸¸ ¸¹Àº ¿¬»êµéÀÌ ¿¹»óÇÏ´Â
°Í¸¸Å­ ¾î·Á¿î °ÍÀº ¾Æ´Ï´Ù.
<P>ÀϹÝÀûÀÎ 32-ºñÆ® ¿¬»êµéÀ» »ç¿ëÇØ¼­ ³×°³ÀÇ ¼ººÐÀ» °¡Áö´Â 8-ºñÆ® Á¤¼ö
º¤ÅÍµé µÎ°³¸¦ ´õÇÏ´Â °Í, <CODE>x</CODE>+<CODE>y</CODE>À» »ý°¢Çغ¸ÀÚ.
<P>ÀϹÝÀûÀÎ 32-ºñÆ® µ¡¼ÀÀº ½ÇÁ¦·Î Á¤È®ÇÑ °á°ú¸¦ ¸¸µéÁö¸¸ 8-ºñÆ® Çʵåµé Áß
Çϳª¶óµµ ´ÙÀ½ Çʵå·Î ij¸®(ÀÚ¸® ¿Ã¸²)¸¦ ¸¸µç´Ù¸é Á¤È®ÇÑ °á°ú¸¦ ¸¸µé¾î³»Áö
¸øÇÑ´Ù. ±×·¡¼­ ¿ì¸®ÀÇ ¸ñÀûÀº ´Ü¼øÇÏ°Ô ±×·± ij¸®°¡ ÀϾÁö ¾Êµµ·Ï
º¸ÀåÇÏ´Â °ÍÀÌ´Ù. µÎ°³ÀÇ <EM>k</EM>-ºñÆ® ÇʵåµéÀ» ´õÇÏ´Â °ÍÀº ¸¹¾Æ¾ß
<EM>k</EM>+1 ºñÆ® °á°ú¸¦ ¸¸µé¾î ³»±â ¶§¹®¿¡ ¿ì¸®´Â °¢ ÇʵåÀÇ msb(most
significant bit)¸¦ ´Ü¼øÈ÷ "¸¶½ºÅ· Á¦°Å(masking out)"ÇÔÀ¸·Î½á ¾î¶² ij¸®µµ
¹ß»ýÇÏÁö ¾Êµµ·Ï º¸ÀåÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº <CODE>0x7f7f7f7f</CODE>·Î °¢
ÇÇ¿¬»êÀÚ¸¦ ºñÆ®´ÜÀ§ and(bitwise anding)ÇÏ°í ³ª¼­ ÀÏ¹Ý 32-ºñÆ® ´õÇϱ⸦
¼öÇàÇÔÀ¸·Î½á ÀÌ·ç¾îÁø´Ù.
<P>
<HR>
<PRE>
t = ((x &amp; 0x7f7f7f7f) + (y &amp; 0x7f7f7f7f));
</PRE>
<HR>
<P>ÀÌ °á°ú´Â Á¤È®ÇÏ´Ù... °¢ ÇʵåÀÇ msb¸¦ Á¦¿ÜÇÏ°í ¸»ÀÌ´Ù. °¢ Çʵ忡 ´ëÇØ¼­
±³Á¤°ªÀ» °è»êÇØº¸ÀÚ. À̰ÍÀº, <CODE>x</CODE>¿Í <CODE>y</CODE>ÀÇ msbµéÀ» <CODE>t</CODE>¿¡
´ëÇØ¼­ °è»êµÈ 7-ºñÆ® ij¸® °á°ú¿¡  µÎ °³ÀÇ 1-ºñÆ® ºÐÇÒµÈ µ¡¼ÀÀ» ÇÏ´Â
¹®Á¦¿¡ Áö³ªÁö ¾Ê´Â´Ù.  ´ÙÇེ·´°Ôµµ 1-ºñÆ® ºÐÇÒ µ¡¼ÀÀº ÀÏ¹Ý exclusive or ¿¬»êÀ¸·Î ±¸ÇöµÇ¾î ÀÖ´Ù. ±×·¡¼­ ±× °á°ú´Â ´ÙÀ½°ú °°´Ù:
<P>
<HR>
<PRE>
(t ^ ((x ^ y) &amp; 0x80808080))
</PRE>
<HR>
<P>ÁÁ´Ù, ±Û½ê, À̰ÍÀº ±×·¸°Ô ´Ü¼øÇÑ °ÍÀÌ ¾Æ´Ò ¼ö ÀÖ´Ù. °á±¹ 4°³ÀÇ µ¡¼ÀÀ»
À§Çؼ­ 6¹ø ¿¬»êÀ» ¼öÇàÇÑ´Ù. ±×·¯³ª ¿¬»êÀÌ È½¼ö´Â Çʵ尡 ¸î°³Àΰ¡¿¡ µû¶ó
´Ù¸£Áö ¾Ê´Ù´Â °ÍÀ» ÁÖ¸ñÇÏÀÚ. ±×·¡¼­ Á» ´õ ¸¹Àº ÇʵåµéÀÌ ÀÖÀ¸¸é ¿ì¸®´Â
¼Óµµ Çâ»óÀ» ¾òÀ» ¼ö ÀÖ´Ù. »ç½Ç ÇʵåµéÀÌ ´ÜÀÏ ¿¬»ê(Á¤¼ö º¤ÅÍ)À¸·Î
·ÎµåµÇ°í ÀúÀåµÇ¾ú±â ¶§¹®¿¡, ¿ì¸®´Â ¾î¶² ½ÄÀ¸·Îµç ´Ü¼øÇÏ°Ô ¼Óµµ Çâ»óÇÒ ¼ö
ÀÖÀ¸¸ç, ·¹Áö½ºÅÍ °¡¿ë¼ºÀº °³¼±µÉ ¼ö ÀÖ°í, µ¿Àû ÄÚµå ½ºÄÉÁÙ¸µ
Á¾¼Ó¼ºÀÌ ´õ Àû´Ù(ºÎºÐ ¿öµå ÂüÁ¶¸¦ ÇÇÇÒ ¼ö Àֱ⠶§¹®¿¡).
<P>
<H3>ÇÊµå ¼öÄ¡ Á¦¾î(Controlling Field Values)</H3>

<P>
<P>ºÎºÐ ¿¬»ê ±¸Çö¿¡ ´ëÇÑ ´Ù¸¥ µÎ°¡Áö Á¢±Ù¹ý µÑ ´Ù ·¹Áö½ºÅ͵鿡 ´ëÇÑ °ø°£
Ȱ¿ëÀ» ÃÖ´ëÈ­ÇÏ·Á°í ÇÏ´Â ¹Ý¸é¿¡, ´ë½Å ÇÊµå °ªµéÀ» Á¦¾îÇØ¼­ ³»ºÎ-Çʵå
ij¸®/ºô¸² À̺¥Æ®µéÀÌ Àý´ë ÀϾÁö ¾Êµµ·Ï ÇÏ´Â °ÍÀÌ Á» ´õ °è»ê Ãø¸é¿¡¼±
È¿À²ÀûÀÌ´Ù. ¿¹¸¦ µé¾î¼­ ¿ì¸®°¡ ´õÇØÁø ¸ðµç ÇÊµå °ªµéÀÌ ¾î¶² Çʵå
¿À¹öÇ÷ο쵵 ÀϾÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾È´Ù¸é ºÎºÐ ´õÇϱ⠿¬»êÀº ÀϹÝÀûÀÎ
´õÇϱ⠸í·ÉÀ» »ç¿ëÇØ¼­ ±¸ÇöµÉ ¼ö ÀÖ´Ù; »ç½Ç ÀÌ·± Á¦ÇÑÀÌ ÁÖ¾îÁö¸é
ÀϹÝÀûÀÎ ´õÇϱ⠿¬»êÀÌ ´ÙÇü¼º(¿ªÀÚÁÖ: Çʵå Å©±â¿¡ µ¶¸³ÀÌ´Ù)ÀÎ °Íó·³ 
º¸ÀÌ°í ±³Á¤ ÄÚµå ¾øÀÌ ¾î¶² Çʵå Å©±âµé¿¡µµ »ç¿ë °¡´ÉÇÏ´Ù. ±×·¡¼­ ¾î¶»°Ô 
ÇÊµå °ªµéÀÌ Ä³¸®/ºô¸² À̺¥Æ®¸¦ ¹ß»ý½ÃŰÁö ¾Êµµ·Ï º¸ÀåÇÒ ¼ö Àִ°¡°¡
°ü°ÇÀÌ µÈ´Ù.
<P>ÀÌ·± Ư¼ºÀ» º¸ÀåÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº ÇÊµå °ªµéÀÇ ¹üÀ§¸¦ Á¦ÇÑÇÒ ¼ö ÀÖ´Â
ºÎºÐÈ­µÈ ¸í·ÉµéÀ» ±¸ÇöÇÏ´Â °ÍÀÌ´Ù. Digital MAX º¤ÅÍ minimum°ú maximum
¸í·ÉµéÀº ³»ºÎ-Çʵå ij¸®/ºô¸²À» ÇÇÇϱâ À§Çؼ­ ÇÊµå °ªµéÀ» Ŭ¸³ÇÎ(¿ªÀÚÁÖ:
ÀÚ¸§)ÇÏ´Â Çϵå¿þ¾îÀûÀÎ Áö¿øÀÌ´Ù.
<P>±×·¯³ª ¿ì¸®°¡ ÇÊµå °ªµéÀÇ ¹üÀ§¸¦ È¿°úÀûÀ¸·Î Á¦ÇÑÇÒ ¼ö ¾ø´Â ºÎºÐÈ­µÈ
¸í·ÉµéÀ» °¡ÁöÁö ¸øÇÑ´Ù°í °¡Á¤ÇÏÀÚ... °©½Î°Ô ij¸®/ºô¸² À̺¥Æ®µéÀÌ ÀÎÁ¢
Çʵåµé »çÀÌ¿¡ °£¼·ÇÏÁö ¾Ê´Â´Ù°í º¸ÀåÇϵµ·Ï ÇÒ ¼ö ÀÖ´Â ÃæºÐÇÑ Á¶°ÇÀÌ
Àִ°¡? ÀÌÀÇ ÇØ´äÀº »çÄ¢¿¬»ê Ư¼ºÀÇ ºÐ¼®¿¡ ÀÖ´Ù. µÎ <EM>k</EM>-ºñÆ®
¼ýÀÚµéÀ» ´õÇÏ´Â °ÍÀº ¸¹¾Æ¾ß <EM>k</EM>+1 ºñÆ®·Î µÈ ¼ýÀÚ¸¦ »ý¼ºÇÑ´Ù;
±×·¡¼­ <EM>k</EM>+1 ºñÆ®´Â ÀÏ¹Ý ¸í·ÉµéÀ» »ç¿ëÇÔ¿¡µµ ºÒ±¸ÇÏ°í ±×·± ¿¬»êÀ»
¾ÈÀüÇÏ°Ô ´ãÀ» ¼ö ÀÖ´Ù.
<P>±×·¡¼­ ¿ì¸®ÀÇ ÀÌÀü ¿¹Á¦¾È¿¡¼­ 8-ºñÆ® ÇʵåµéÀÌ ÀÌÁ¦´Â 1-ºñÆ®ÀÇ "ij¸®/ºô¸²
¿ÏÃæ±â(spacers)"¸¦ °¡Áö´Â 7-ºñÆ® ÇʵåµéÀ̶ó°í °¡Á¤ÇÏÀÚ:
<P>
<HR>
<PRE>
              PE3          PE2          PE1          PE0
      +----+-------+----+-------+----+-------+----+-------+
Reg0  | D' | D 6:0 | C' | C 6:0 | B' | B 6:0 | A' | A 6:0 |
      +----+-------+----+-------+----+-------+----+-------+
</PRE>
<HR>
<P>7-ºñÆ® µ¡¼ÀÀÇ º¤ÅÍ´Â ´ÙÀ½°ú °°ÀÌ ¼öÇàµÈ´Ù. ¾î¶² ºÎºÐ ¿¬»êÀ» ½ÃÀÛÇϱâ
ÀÌÀü¿¡ ¸ðµç ij¸® ¿ÏÃæ ºñÆ®µé(<CODE>A'</CODE>, <CODE>B'</CODE>, <CODE>C'</CODE>,
±×¸®°í <CODE>D'</CODE>)°¡ 0À̶ó´Â °ªÀ» °®´Â´Ù°í °¡Á¤ÇÏÀÚ. ´Ü¼øÇÏ°Ô ÀÏ¹Ý µ¡¼À
¿¬»êÀ» ¼öÇàÇÔÀ¸·Î½á ¸ðµç ÇʵåµéÀº Á¤È®ÇÑ 7-ºñÆ® °ªµéÀ» ¾ò´Â´Ù; ±×·¯³ª
¾î¶² ¿ÏÃæ ºñÆ® °ªµéÀº ÀÌÁ¦ 1ÀÌ µÉ ¼ö ÀÖ´Ù. ¿ì¸®´Â À̰ÍÀ» 
ÀüÅëÀûÀÎ ¿¬»êÀÎ ¿ÏÃæ ºñÆ®µé¿¡ ´ëÇÑ ¸¶½ºÅ©-Á¦°Å¸¦ Çѹø ´õ ¼öÇàÇÔÀ¸·Î½á
±³Á¤ÇÒ ¼ö ÀÖ´Ù. ¿ì¸®ÀÇ 7-ºñÆ® Á¤¼ö º¤ÅÍ µ¡¼À, <CODE>x</CODE>+<CODE>y</CODE>Àº
±×·¡¼­ ´ÙÀ½°ú °°´Ù:
<P>
<HR>
<PRE>
((x + y) &amp; 0x7f7f7f7f)
</PRE>
<HR>
<P>À̰ÍÀº ³×°³ÀÇ µ¡¼ÀÀ» µÎ ¸í·É¾î·Î ÁÙÀÎ °ÍÀÌ´Ù. ±×·¡¼­ À̰ÍÀº ÁÁÀº ¼Óµµ
Çâ»óÀ» ºÐ¸íÈ÷ °¡Á®¿Ã °ÍÀÌ´Ù.
<P>ÁÖÀÇ ±íÀº µ¶ÀÚ(sharp reader)´Â ¿ÏÃæ ºñÆ®µéÀ» 0À¸·Î ¼³Á¤ÇÏ´Â °ÍÀº »©±â
¿¬»ê¿¡¼­ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ´«Ä¡Ã«À» °ÍÀÌ´Ù. ±×·¯³ª ±× ±³Á¤ ¹æ¹ýÀÌ
¾ÆÁÖ ´Ü¼øÇÏ´Ù. <CODE>x</CODE>-<CODE>y</CODE>¸¦ °è»êÇϱâ À§Çؼ­ ¿ì¸®´Â
<CODE>x</CODE>¿¡ ÀÖ´Â ¿ÏÃæ ºñÆ®µéÀº ¸ðµÎ 1ÀÌ°í  <CODE>y</CODE>¿¡ ÀÖ´Â ¿ÏÃæ
ºñÆ®µéÀº ¸ðµÎ 0À̶ó´Â Ãʱâ Á¶°ÇÀ» È®½ÇÇÏ°Ô ÇÑ´Ù. °¡Àå ³ª»Û °æ¿ì¿¡ ¿ì¸®´Â
´ÙÀ½°ú °°Àº °ÍÀ» ¾òÀ» °ÍÀÌ´Ù:
<P>
<HR>
<PRE>
(((x | 0x80808080) - y) &amp; 0x7f7f7f7f)
</PRE>
<HR>
<P>±×·¯³ª Ãß°¡ÀÇ ºñÆ®º° or ¿¬»êÀº Á¾Á¾, <CODE>x</CODE>ÀÇ °ªÀ» »ý¼ºÇÏ´Â ¿¬»êÀÌ
<CODE>&amp; 0x7f7f7f7f</CODE> ´ë½Å¿¡ <CODE>| 0x80808080</CODE>À» ¸¶Áö¸·
½ºÅÜÀ¸·Î½á »ç¿ëÇÑ´Ù´Â °ÍÀ» È®½ÇÇÏ°Ô ÇÔÀ¸·Î½á, ÃÖÀûÈ­µÉ ¼ö ÀÖ´Ù.
<P>¾î¶² ¹æ¹ýÀÌ SWAR ºÎºÐÈ­µÈ ¿¬»êµé¿¡ ´ëÇØ¼­ »ç¿ëµÇ¾î¾ß ÇÒ °ÍÀΰ¡? ±× ´äÀº
´Ü¼øÇϰԵµ "°¡Àå ºü¸¥ ¼Óµµ(Çâ»ó)À» ³»´Â °ÍÀÌ¸é ¹«¾ùÀÌµç µÈ´Ù"´Â °ÍÀÌ´Ù.
Èï¹Ì·Ó°Ôµµ »ç¿ëÇϱâ À§ÇÑ ÀÌ»óÀûÀÎ ¹æ¹ýÀº µ¿ÀÏÇÑ ±â°èÀ§¿¡¼­ µ¿ÀÛÇÏ´Â
µ¿ÀÏÇÑ ÇÁ·Î±×·¥ ³»¿¡¼­(µµ) ¼­·Î ´Ù¸¥ Çʵå Å©±âµé¿¡ ´ëÇØ¼­ ¼­·Î ´Ù¸¦ ¼ö
ÀÖ´Ù.
<P>
<H3>Åë½Å°ú ŸÀÔ º¯È¯ ¿¬»ê(Communication &amp; Type Conversion                Operations)</H3>

<P>
<P>ºñ·Ï, À̹ÌÁö Çȼ¿µé¿¡ ´ëÇÑ ¸¹Àº ¿¬»êµéÀ» Æ÷ÇÔÇØ¼­, ¾î¶² º´·Ä °è»êÀº ÇÑ
º¤ÅÍÀÇ <EM>i</EM>¹øÂ° °ªÀº ÇÇ¿¬»êÀÚ º¤Å͵éÀÇ <EM>i</EM>¹øÂ° À§Ä¡¿¡
³ªÅ¸³ª´Â °ªµé¸¸ÀÇ ÇÔ¼öÀ̶ó´Â ¼Ó¼ºÀ» °®°í ÀÖÁö¸¸, À̰ÍÀº ÀϹÝÀûÀ¸·Î ±×·±
°æ¿ì°¡ ¾Æ´Ï´Ù. ¿¹¸¦ µé¾î¼­ ºÎµå·´°Ô Çϱâ(smoothing)¿Í °°Àº Çȼ¿
¿¬»êµéÁ¶Â÷ ÀÎÁ¢ Çȼ¿µéÀ» ÇÇ¿¬»êÀÚµé·Î ¿ä±¸Çϰí FFTµé°ú °°Àº º¯È¯µéµµ Á»
´õ º¹ÀâÇÑ(´ú Áö¿ªÈ­µÈ) Åë½Å ÆÐÅϵéÀ» ¿ä±¸ÇÑ´Ù.
<P>SWAR¸¦ À§ÇÑ, ºÎºÐÈ­µÇÁö ¾ÊÀº ½¬ÇÁÆ® ¿¬»êµéÀ» »ç¿ëÇÑ, 1-Â÷¿ø °¡Àå ±ÙÁ¢ÇÑ
ÀÌ¿ô Åë½ÅÀ» È¿À²ÀûÀ¸·Î ±¸ÇöÇÏ´Â °ÍÀº ¾î·Á¿î ÀÏÀÌ ¾Æ´Ï´Ù. ¿¹¸¦ µé¾î¼­,
<CODE>PE</CODE><EM>i</EM>·ÎºÎÅÍ <CODE>PE</CODE>(<EM>i</EM>+1)·Î °ªÀ» À̵¿Çϱâ
À§Çؼ­ ´Ü¼øÇÑ ½¬ÇÁÆ® ¿¬»êÀ¸·Îµµ ÃæºÐÇÏ´Ù. ÇʵåµéÀÌ 8-ºñÆ®ÀÇ ±æÀ̸¦
°¡Áø´Ù¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ °ÍÀÌ´Ù:
<P>
<HR>
<PRE>
(x &lt;&lt; 8)
</PRE>
<HR>
<P>±×·¯³ª À̰ÍÀº Ç×»ó ±×·¸°Ô ´Ü¼øÇÏÁö ¾Ê´Ù. ¿¹¸¦ µé¾î¼­
<CODE>PE</CODE><EM>i</EM>·ÎºÎÅÍ <CODE>PE</CODE>(<EM>i</EM>-1)·Î °ªÀ» À̵¿ÇÏ·Á¸é,
´Ü¼øÇÑ ½¬ÇÁÆ® ¿¬»êÀ¸·Îµµ ÃæºÐÇÏ´Ù. ±×·¯³ª C ¾ð¾î´Â ¿À¸¥ÂÊ ½¬ÇÁÆ®°¡ ºÎÈ£
ºñÆ®¸¦ º¸Á¸ÇÏ´ÂÁö ¾ÊÇÏ´ÂÁö¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ¾î¶² ±â°èµéÀº ºÎÈ£ ºÙÀº
¿À¸¥ÂÊ ½¬ÇÁÆ®¸¸À» Áö¿øÇÑ´Ù. ±×·¡¼­ ÀϹÝÀûÀÎ °æ¿ì ¿ì¸®´Â ¹Ýµå½Ã
¸í½ÃÀûÀ¸·Î, ÀáÀçÀûÀÎ º¹»çµÈ(replicated) ºÎÈ£ ºñÆ®µéÀ» 0À¸·Î ¸¸µé¾î¾ß
ÇÑ´Ù:
<P>
<HR>
<PRE>
((x >> 8) &amp; 0x00ffffff)
</PRE>
<HR>
<P>"wrap-around Ä¿³Ø¼Çµé"À» ´õÇÏ´Â °Íµµ ¶ÇÇÑ ºÎºÐÈ­µÇÁö ¾ÊÀº ½¬ÇÁÆ®¸¦
»ç¿ëÇØ¼­ »ó´çÈ÷ È¿À²ÀûÀÌ´Ù. ¿¹¸¦ µé¾î¼­ <CODE>PE</CODE><EM>i</EM>·ÎºÎÅÍ °ªÀ»
<CODE>PE</CODE>(<EM>i</EM>+1)·Î wraparound¸¦ ÀÌ¿ëÇØ¼­ ¿Å±â·Á¸é:
<P>
<HR>
<PRE>
((x &lt;&lt; 8) | ((x >> 24) &amp; 0x000000ff))
</PRE>
<HR>
<P>½ÇÁúÀûÀÎ ¹®Á¦´Â Á» ´õ ÀϹÝÀûÀÎ Åë½Å ÆÐÅÏÀÌ ¹Ýµå½Ã ±¸ÇöµÇ¾î¾ß ÇÑ´À °æ¿ì¿¡
¹ß»ýÇÑ´Ù. ´ÜÁö HP MAX ¸í·É¾î ÁýÇÕ¸¸ÀÌ ´ÜÀÏ ¸í·ÉÀ¸·Î ÇʵåµéÀÇ ÀÓÀÇ
Àç¹èÄ¡¸¦ Áö¿øÇÑ´Ù. À̰ÍÀº <CODE>Permute</CODE>¶ó°í ºÒ¸°´Ù. ÀÌ
<CODE>Permute</CODE> ¸í·ÉÀº ½ÇÁ¦·Î À̸§ÀÌ À߸ø Áö¾îÁ³´Ù; À̰ÍÀº ÇʵåµéÀÇ
ÀÓÀÇÀÇ permutation
<BLOCKQUOTE>¿ªÀÚÁÖ: ¼ø¿­À̶ó°í ¹ø¿ªÇÏÁö¸¸ ¼öÇп¡¼­´Â ÀÏÁ¤
°³¼öÀÇ °´Ã¼µéÀÇ ÀÚ¸® À̵¿À» ¸»ÇÑ´Ù</BLOCKQUOTE>
¸¸ ¼öÇàÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó
¹Ýº¹(repetition)µµ Çã¿ëÇÑ´Ù. °£´ÜÈ÷ ¸»Çؼ­ À̰ÍÀº ÀÓÀÇÀÇ <CODE>x[y]</CODE>
¿¬»êÀ» ¼öÇàÇÑ´Ù.
<P>ºÒÇàÇϰԵµ <CODE>x[y]</CODE>´Â ±×·± ¸í·É¾øÀÌ ±¸ÇöÇϱⰡ ¾ÆÁÖ ¾î·Æ´Ù. ÄÚµå
½ÃÄö½º´Â ÀϹÝÀûÀ¸·Î ±æ¸é¼­µµ ºñÈ¿À²ÀûÀÌ´Ù; »ç½Ç À̰ÍÀº ¼øÂ÷ÀûÀÎ
ÄÚµåÀÌ´Ù. À̰ÍÀº ¾ÆÁÖ ½Ç¸Á½º·¯¿î °ÍÀÌ´Ù. MasPar MP1/MP2¿Í Thinking
Machines CM1/CM2/CM200
SIMD ½´ÆÛÄÄÇ»ÅÍ¿¡¼­ÀÇ <CODE>x[y]</CODE>ÀÇ »ó´ëÀûÀ¸·Î ³ôÀº ¿¬»ê ¼Óµµ´Â ÀÌ·±
±â°èµéÀÇ ¼º´ÉÀÌ ÁÁ¾Ò´ø ÁÖ¿ä ÀÌÀ¯µé ÁßÀÇ ÇϳªÀ̾ú´Ù. ±×·¯³ª
<CODE>x[y]</CODE>´Â Ç×»ó °¡Àå ±ÙÁ¢ÇÑ ÀÌ¿ô Åë½Åº¸´Ùµµ, ½ÉÁö¾î ±×·±
½´ÆÛÄÄÇ»Å͵鿡¼­Á¶Â÷, ´õ ´À¸®±â ¶§¹®¿¡ ¸¹Àº ¾Ë°í¸®ÁòµéÀÌ <CODE>x[y]</CODE>
¿¬»êµé¿¡ ´ëÇÑ ¼ö¿ä¸¦ ÃÖ¼ÒÈ­Çϱâ À§Çؼ­ °í¾ÈµÇ¾î ¿Ô¾ú´Ù. °£´ÜÇÏ°Ô ¸»Çؼ­
Çϵå¿þ¾î Áö¿ø¾øÀÌ À̰ÍÀº <CODE>x[y]</CODE>°¡ ÇÕ¹ýÀûÀÌÁö ¾ÊÀº °Íó·³ ¶Ç´Â
Àû¾îµµ ½Ñ °ÍÀÌ ¾Æ´Ñ°Íó·³ SWAR ¾Ë°í¸®ÁòµéÀ» °³¹ßÇÏ´Â °ÍÀÌ °¡Àå ÁÁÀ»
°ÍÀÌ´Ù.
<P>
<H3>¼øÈ¯ ¿¬»ê(Recurrence Operations) (Ãà¼Ò, ½ºÄµ µî)</H3>

<P>
<P>¼øÈ¯À̶õ °è»êµÇ´Â °ªµé°£ÀÇ ¿Ü¸é»ó ¼øÂ÷ÀûÀÎ °ü°è°¡ ÀÖ´Â °è»êÀ» ¸»ÇÑ´Ù.
±×·¯³ª ÀÌ·± ¼øÈ¯ÀÌ °áÇÕÀûÀÎ ¿¬»êµéÀ» Æ÷ÇÔÇÑ´Ù¸é ¼¼°³ÀÇ ±¸Á¶È­µÈ º´·Ä
¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿© ±× °è»êÀ» ÀçÄÚµùÇÏ´Â °ÍÀÌ °¡´ÉÇÒ ¼ö ÀÖ´Ù.
<P>º´·ÄÈ­°¡ °¡´ÉÇÑ ¼øÈ¯(recurrence)ÀÇ ´ëºÎºÐÀÇ ÀϹÝÀûÀΠŸÀÔÀº ¾Æ¸¶µµ °áÇÕ
Ãà¼Ò(associative reduction)À¸·Î ¾Ë·ÁÁø Ŭ·¡½ºÀÏ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­ ¾î¶²
º¤ÅÍ °ªµéÀÇ µ¡¼ÀÀ» °è»êÇϱâ À§Çؼ­ ´ÙÀ½°ú °°Àº ¿ÏÀüÈ÷ ¼øÂ÷ÀûÀÎ C Äڵ带
ÀÛ¼ºÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù:
<P>
<HR>
<PRE>
t = 0;
for (i=0; i&lt;MAX; ++i) t += x[i];
</PRE>
<HR>
<P>±×·¯³ª, ÀÌ·± µ¡¼ÀÀÇ ¼ø¼­´Â ´Ù¼ö º°·Î Áß¿äÇÏÁö ¾Ê´Ù. ºÎµ¿ ¼Ò¼ýÁ¡°ú
±ØÇÑ(saturation) ¼öÇÐÀº µ¡¼ÀÀÇ ¼ø¼­°¡ ¹Ù²î¸é ´Ù¸¥ ´äµéÀ» ³¾ ¼ö ÀÖÁö¸¸
ÀϹÝÀûÀÎ wrap-around Á¤¼ö µ¡¼ÀµéÀº µ¡¼ÀÀÇ ¼ø¼­¿¡ °ü°è¾øÀÌ µ¿ÀÏÇÑ
°á°úµéÀ» ³¾ °ÍÀÌ´Ù. ±×·¡¼­ ¿ì¸®´Â ÀÌ·± ½ÃÄö½º¸¦, ù¹øÂ° µÎ °ªµé ½ÖµéÀ»
´õÇϰí, ±×´ÙÀ½¿¡ ÀÌ·± ºÎºÐÇÕµéÀ» ´õÇϰí ÀÌ·±½ÄÀ¸·Î ´ÜÀÏ ¸¶Áö¸· µ¡¼ÀÀÌ
³ª¿Ã ¶§±îÁö °è¼ÓÇÏ´Â, ¼¼°³ÀÇ-±¸Á¶È­µÈ º´·Ä µ¡¼ÀÀ¸·Î ÀçÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
³×°³ÀÇ 8-ºñÆ® °ªµéÀÇ º¤ÅÍ¿¡ ´ëÇØ¼­ µÎ µ¡¼À ´Ü°èµéÀÌ ÇÊ¿äÇÏ´Ù; ù¹øÂ°
´Ü°è´Â µÎ°³ÀÇ 8-ºñÆ® µ¡¼ÀÀ» ¼öÇàÇϰí, ±×´ÙÀ½ µÎ°³ÀÇ 16-ºñÆ® °á°ú
ÇʵåµéÀ» »ý¼ºÇÑ´Ù(°¢°¢Àº 9-ºñÆ® °á°ú¸¦ ´ã°í ÀÖ´Ù):
<P>
<HR>
<PRE>
t = ((x &amp; 0x00ff00ff) + ((x >> 8) &amp; 0x00ff00ff));
</PRE>
<HR>
<P>µÎ¹øÂ° ½ºÅÜÀº ÀÌ·± µÎ°³ÀÇ 9-ºñÆ® °ªµéÀ» 16-ºñÆ® Çʵåµé¾È¿¡¼­, ´ÜÀÏ
10-ºñÆ® °á°ú¸¦ ¸¸µé±â À§ÇØ, ´õÇÑ´Ù:
<P>
<HR>
<PRE>
((t + (t >> 16)) &amp; 0x000003ff)
</PRE>
<HR>
<P>½ÇÁ¦, µÎ¹øÂ° ½ºÅÜÀº µÎ°³ÀÇ 16-ºñÆ® ÇÊµå µ¡¼ÀµéÀ» ¼öÇàÇÑ´Ù... ±×·¯³ª ¸Ó¸®
16-ºñÆ® µ¡¼ÀÀº Àǹ̰¡ ¾ø´Ù. À̰ÍÀÌ ¹Ù·Î ¿Ö °á°ú°¡ ´ÜÀÏ 10-ºñÆ® °á°ú °ª¿¡
´ëÇØ¼­ ¸¶½ºÅ·µÇ´Â°¡¿¡ ´ëÇÑ ÀÌÀ¯ÀÌ´Ù.
<P>"º´·Ä Á¢µÎ¾î(parallel prefix)" ¿¬»êÀ¸·Î ¾Ë·ÁÁø ½ºÄµÀº ´Ù¼Ò È¿À²ÀûÀ¸·Î
±¸ÇöÇϱⰡ ´õ ¾î·Æ´Ù. À̰ÍÀº ¿Ö³Ä¸é, Ãà¼Ò(reduction)°ú ´Ù¸£°Ô, ½ºÄµÀÌ
ºÎºÐÀûÀÎ(partitioned) °á°ú¸¦ ³»±â ¶§¹®ÀÌ´Ù. ÀÌ·± ÀÌÀ¯·Î ½ºÄµÀº ¾ÆÁÖ
¸í¹éÇÑ, ºÎºÐÀûÀÎ ¿¬»êµéÀÇ ½ÃÄö½º¸¦ »ç¿ëÇØ¼­ ±¸ÇöµÉ ¼ö ÀÖ´Ù.
<P>
<H2><A NAME="ss4.3">4.3 ¸®´ª½º¿¡¼­ÀÇ MMX SWAR</A>
</H2>

<P>
<P>¸®´ª½ºÀÌ °æ¿ì IA32 ÇÁ·Î¼¼¼­µéÀÌ ¿ì¸®ÀÇ ÁÖ¿ä °ü½É»çÀÌ´Ù. AMD, Cyrix,
±×¸®°í Intel ¸ðµÎ µ¿ÀÏÇÑ MMX ¸í·É¾îµéÀ» ±¸ÇöÇÑ´Ù°í ÇÏ´Â °ÍÀº ±Â´º½ºÀÌ´Ù.
±×·¯³ª MMX ¼º´ÉÀº ¼­·Î ´Ù¸£´Ù; ¿¹¸¦ µé¾î¼­ K6´Â MMX ÆÄÀÌÇÁ¶óÀÎÀ» ´ÜÁö
Çϳª¸¸ °¡Áø´Ù - (ÀÌ¿¡ ¹ÝÇØ¼­)Pentium with MMX´Â µÎ°³¸¦ °¡Áø´Ù. IntelÀÌ
¾ÆÁ÷µµ ÀÌ·± ¸ÛûÇÑ MMX ±¤°í¸¦ °è¼ÓÇϰí ÀÖ´Ù´Â °ÍÀÌ À¯ÀÏÇÑ ¹èµå´º½ºÀÌ´Ù.
;-)
<P>SWAR¸¦ À§ÇÏ¿© MMX¸¦ »ç¿ëÇÏ´Â µ¥´Â ½ÇÁ¦ ´ÙÀ½°ú °°Àº ¼¼°¡Áö Á¢±Ù¹ýÀÌ ÀÖ´Ù:
<P>
<OL>
<LI>MMX ¶óÀ̺귯¸® ·çƾµéÀ» »ç¿ëÇÏ´Â °Í. Ưº°È÷ IntelÀº ¸î°¡Áö "¼º´É
¶óÀ̺귯¸®µéÀ»(performance libraries)", 
<A HREF="http://developer.intel.com/drg/tools/ad.htm">http://developer.intel.com/drg/tools/ad.htm</A> °³¹ßÇß´Ù. À̰ÍÀº ÀϹÝ
¸ÖƼ¹Ìµð¾î ÀÛ¾÷µé¿¡ ´ëÇØ¼­ ¼ÕÀ¸·Î-ÃÖÀûÈ­µÈ ´Ù¾çÇÑ ·çƾµéÀ» Á¦°øÇÑ´Ù.
ÀûÀº ³ë·ÂÀ¸·Î ¸¹Àº ºñ-¸ÖƼ¹Ìµð¾î ¾Ë°í¸®ÁòµéÀÌ ´ëºÎºÐÀÇ ÄÄÇ»ÅÍ-ÁýÁß
Æ÷¼ÇµéÀÇ ÀϺΰ¡ ÀÌ·± ¶óÀ̺귯¸® ·çƾµéÀ» Çϳª ¶Ç´Â ±×ÀÌ»ó »ç¿ëÇØ¼­
±¸ÇöµÉ¼ö ÀÖµµ·Ï ÀçÀÛ¾÷µÉ ¼ö ÀÖ´Ù. ÀÌ·± ¶óÀ̺귯¸®µéÀº ÇöÀç ¸®´ª½º¿¡
´ëÇØ¼­ »ç¿ëºÒ°¡´ÉÀÌÁö¸¸ Æ÷ÆÃ °¡´ÉÇÒ ¼ö ÀÖ´Ù.
</LI>
<LI>MMX ¸í·É¾îµéÀ» Á÷Á¢ »ç¿ëÇÏ´Â °Í. À̰ÍÀº ´Ù¼Ò µÎ°¡Áö Á¡µé¿¡ ÀÇÇØ¼­
º¹ÀâÇÏ´Ù. ù¹øÂ° ¹®Á¦´Â MMX°¡ ÇÁ·Î¼¼¼­¿¡¼­ »ç¿ë°¡´ÉÇÏÁö ¾ÊÀ» ¼ö À־
´ëü ±¸Çö¹°ÀÌ ¹Ýµå½Ã Á¦°øµÇ¾î¾ß ÇÒ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù. µÎ¹øÂ° ¹®Á¦´Â
¸®´ª½º¿¡¼­ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â IA32 ¾î¼Àºí·¯°¡ ÇöÀç MMX ¸í·É¾îµéÀ»
ÀÌÇØÇÏÁö ¸øÇÑ´Ù´Â °ÍÀÌ´Ù.
</LI>
<LI>ÀûÀýÇÑ MMX ¸í·É¾îµéÀ» Á÷Á¢ »ý¼ºÇÒ ¼ö ÀÖ´Â °í-¼öÁØ ¾ð¾î³ª ¸ðµâ
ÄÄÆÄÀÏ·¯(module compiler)¸¦ »ç¿ëÇÏ´Â °Í. ±×·± ÅøµéÀº ÇöÀç °³¹ß Áß¿¡
ÀÖÁö¸¸ ¾î¶² °Íµµ ¾ÆÁ÷ ¸®´ª½º¿¡¼­ ¿ÏÀüÇÑ ±â´ÉÀ» °¡Áø °ÍÀÌ ¾ø´Ù. ¿¹¸¦
µé¾î¼­ ÆÛµà ´ëÇб³ (
<A HREF="http://dynamo.ecn.purdue.edu/~hankd/SWAR/">http://dynamo.ecn.purdue.edu/~hankd/SWAR/</A>)¿¡¼­ ¿ì¸®´Â
ÇöÀç ¸í½ÃÀûÀ¸·Î º´·Ä C ¹æ¾ðÀ¸·Î ÀÛ¼ºµÈ ÇÔ¼öµéÀ» ÃëÇØ¼­ C ÇÔ¼öµé·Î °¡´ÉÇÑ
SWAR ¸ðµâµéÀ» »ý¼ºÇÒ ÄÄÆÄÀÏ·¯¸¦ °³¹ßÇϰí ÀÖÁö¸¸, ¾ÆÁ÷ MMX¸¦ Æ÷ÇÔÇØ¼­ 
SWAR Áö¿øÀÌ °¡´ÉÇÑ °ÍÀÌ¸é ¹«¾ùÀÌµç »ç¿ëÇÑ´Ù. ù¹øÂ° ÇÁ·ÎÅäŸÀÔ ¸ðµâ
ÄÄÆÄÀÏ·¯´Â 1996³â °¡À»¿¡ ¸¸µé¾îÁ³´Ù. ±×·¯³ª ÀÌ ±â¼úÀ» »ç¿ë°¡´ÉÇÑ
»óűîÁö ¸¸µå´Â °ÍÀº óÀ½¿¡ ¿¹»óÇÑ °Íº¸´Ù ´õ ¿À·¡ °É¸®°í ÀÖ´Ù.</LI>
</OL>
<P>¿ä¾àÇϸé MMX SWAR´Â ¿©ÀüÈ÷ »ç¿ëÇϱ⿡ ¾î·Æ´Ù. ±×·¯³ª ¿©ºÐÀÇ ³ë·ÂÀ» Á¶±Ý
´õÇϸé À§¿¡¼­ ÁÖ¾îÁø µÎ¹øÂ° Á¢±Ù¹ýÀº Áö±Ýµµ »ç¿ëµÉ ¼ö ÀÖ´Ù. ´ÙÀ½Àº ±×
±âº»ÀÌ´Ù:
<P>
<OL>
<LI>ÇÁ·Î¼¼¼­°¡ MMX¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¸é MMX¸¦ ¾µ ¼ö ¾ø´Ù. ´ÙÀ½ GCC
ÄÚµå´Â MMX°¡ ¿©·¯ºÐÀÇ ÇÁ·Î¼¼¼­¿¡¼­ Áö¿øµÇ´ÂÁö ¾ÈµÇ´ÂÁö¸¦ Å×½ºÆ®ÇÏ´Â µ¥
»ç¿ëµÉ ¼ö ÀÖ´Ù. Áö¿ø¾ÈµÇ¸é 0ÀÌ ¸®Åϵǰí Áö¿øµÇ¸é 0ÀÌ ¾Æ´Ñ °ªÀÌ ¸®ÅϵȴÙ.

<HR>
<PRE>
inline extern
int mmx_init(void)
{
        int mmx_available;

        __asm__ __volatile__ (
                /* Get CPU version information */
                "movl $1, %%eax\n\t"
                "cpuid\n\t"
                "andl $0x800000, %%edx\n\t"
                "movl %%edx, %0"
                : "=q" (mmx_available)
                : /* no input */
        );
        return mmx_available;
}
</PRE>
<HR>

</LI>
<LI>MMX ·¹Áö½ºÅÍ´Â ±âº»ÀûÀ¸·Î GCC°¡ <CODE>unsigned long long</CODE>¶ó°í
ºÎ¸£´Â °Í Áß Çϳª¸¦ °®°í ÀÖ´Ù. ±×·¡¼­ ÀÌ·± ŸÀÔÀÇ ¸Þ¸ð¸®-±â¹Ý º¯¼öµéÀº
¿©·¯ºÐÀÇ MMX ¸ðµâµé°ú ±×µéÀ» È£ÃâÇÏ´Â C ÇÁ·Î±×·¥µé°£ÀÇ Åë½Å ¸ÞÄ«´ÏÁòÀÌ
µÈ´Ù. ¶Ç´Â MMX µ¥ÀÌÅ͸¦ ÀÓÀÇÀÇ 64-ºñÆ® Á¤·ÄµÈ µ¥ÀÌÅÍ ½ºÆ®·°ÃÄ·Î
¼±¾ðÇÒ¼öµµ ÀÖ´Ù (¿©·¯ºÐÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ» <CODE>unsigned long long</CODE>
Çʵ带 °¡Áö´Â <CODE>union</CODE>ÀÇ Å¸ÀÔÀ¸·Î ¼±¾ðÇÔÀ¸·Î½á 64-ºñÆ®
Á¤·ÄÀÌ µÇµµ·Ï ÇÏ´Â °ÍÀÌ Æí¸®ÇÏ´Ù).
</LI>
<LI>MMX°¡ »ç¿ë°¡´ÉÀ̶ó¸é ¿©·¯ºÐÀº, °¢ ¸í·ÉÀ» ÀÎÄÚµåÇÏ´Â <CODE>.byte</CODE>
¾î¼Àºí¸® Áö½Ã¾î¸¦ »ç¿ëÇÑ ¿©·¯ºÐÀÇ MMX Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­
MMX ¸í·É¾î <CODE>PADDB MM0,MM1</CODE>´Â ´ÙÀ½°ú °°ÀÌ GCC ÀÎ-¶óÀÎ ¾î¼Àºí¸®
ÄÚµå·Î ÀÎÄÚµùµÉ ¼ö ÀÖ´Ù:

<HR>
<PRE>
__asm__ __volatile__ (".byte 0x0f, 0xfc, 0xc1\n\t");
</PRE>
<HR>


MMX´Â ºÎµ¿ ¼Ò¼ýÁ¡ ¿¬»êµé¿¡ ´ëÇØ¼­ »ç¿ëµÇ´Â Çϵå¿þ¾î¿Í µ¿ÀÏÇÑ °ÍµéÀ»
»ç¿ëÇÑ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ. ±×·¡¼­ MMX ÄÚµå¿Í ¼­·Î ¼¯ÀÎ ÄÚµå´Â ºÎµ¿ ¼Ò¼ýÁ¡
¿¬»êµéÀ» È£ÃâÇØ¼­´Â ¾ÈµÈ´Ù. ºÎµ¿ ¼Ò¼ýÁ¡ ½ºÅõµ ¶ÇÇÑ MMX Äڵ带 ½ÇÇàÇϱâ
Àü¿¡ ºñ¿öÁ®¾ß ÇÑ´Ù; ºÎµ¿ ¼Ò¼ýÁ¡ ½ºÅÃÀº ÀϹÝÀûÀ¸·Î ºÎµ¿ ¼Ò¼ýÁ¡À» »ç¿ëÇÏÁö
¾Ê´Â C ÇÔ¼öÀÇ ½ÃÀÛÁ¡¿¡¼­ ºñ¿öÁø´Ù.
</LI>
<LI>´ÙÀ½°ú °°ÀÌ ÄÚµùµÉ ¼ö ÀÖ´Â °Íó·³, <CODE>EMMS</CODE> ¸í·ÉÀ»
½ÇÇàÇÔÀ¸·Î½á, MMX Äڵ带 Á¾·áÇÏÀÚ:

<HR>
<PRE>
__asm__ __volatile__ (".byte 0x0f, 0x77\n\t");
</PRE>
<HR>
</LI>
</OL>
<P>À§ÀÇ °ÍÀÌ ¾ÆÁÖ ÀÌ»óÇϰí Á¶ÀâÇÏ°Ô º¸ÀÎ´Ù¸é ±×·¸´Ù. ±×·¯³ª MMX´Â ¿©ÀüÈ÷ ²Ï
Àþ´Ù... ÀÌ ¹®¼­ÀÇ ³ªÁß ¹öÀüÀº MMX SWAR¸¦ ÇÁ·Î±×·¥ÇÏ´Â Á» ´õ ³ªÀº
¹æ¹ýµéÀ» Á¦°øÇÒ °ÍÀÌ´Ù.
<P>
<HR>
<A HREF="Parallel-Processing-HOWTO-5.html">´ÙÀ½</A>
<A HREF="Parallel-Processing-HOWTO-3.html">ÀÌÀü</A>
<A HREF="Parallel-Processing-HOWTO.html#toc4">Â÷·Ê</A>
</BODY>
</HTML>
Results 1 - 1
Help - FTP Sites List - Software Dir.
Searching half a billion files worldwide
© 1997-2009 MARUHN Internet Solutions