Linux Parallel Processing HOWTO Hank Dietz, pplinux@ecn.purdue.edu v980105, 5 January 1998 1Àå-2Àå ÀÌÈ£, (i@flyduck.com), 3Àå ÀÌÈÄ ¼±Á¤ÇÊ, (simje@maninet.com) 1999³â 12¿ù 3ÀÏ, ÃÖÁ¾ ¾÷µ¥ÀÌÆ®: 2000³â 4¿ù 18ÀÏ º´·Äó¸®(Parallel Processing)´Â ÇÁ·Î±×·¥À» µ¿½Ã¿¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¿©·¯ Á¶°¢À¸·Î ³ª´©¾î °¢ÀÚ ÀÚ½ÅÀÇ ÇÁ·Î¼¼¼­¿¡¼­ ½ÇÇàÇÔÀ¸·Î½á ÇÁ·Î±×·¥ ¼öÇà ¼Óµµ¸¦ ºü¸£°Ô ÇÑ´Ù´Â °³³äÀÌ´Ù. ÇÁ·Î±×·¥À» N°³ÀÇ ÇÁ·Î¼¼¼­¿¡¼­ ½ÇÇàÇϸé ÇϳªÀÇ ÇÁ·Î¼¼¼­ ½ÇÇàÇÏ´Â °Íº¸´Ù N¹è±îÁö »¡¶óÁú ¼ö ÀÖ´Ù. ÀÌ ¹®¼­´Â ¸®´ª½º »ç¿ëÀÚµéÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ³×°¡Áö º´·Ä 󸮿¡ ´ëÇÑ Á¢±Ù¹ýÀ» ´Ù·é´Ù. SMP ¸®´ª½º ½Ã½ºÅÛ, ³×Æ®¿÷À¸·Î ¿¬°áµÈ ¸®´ª½º ½Ã½ºÅÛÀÇ Å¬·¯½ºÅÍ, ¸ÖƼ¹Ìµð¾î ¸í·É¾î(MMX°°Àº)¸¦ ÀÌ¿ëÇÑ º´·Ä ¼öÇà, ÇϳªÀÇ ¸®´ª½º ½Ã½ºÅÛÀÌ È£½ºÆ®ÇÏ´Â ºÎ¼Ó (º´·Ä) ÇÁ·Î¼¼¼­(attached processor)°¡ À̵éÀÌ´Ù. ______________________________________________________________________ ¸ñÂ÷ 1. ¼Ò°³ 1.1 º´·Ä󸮰¡ ³»°¡ ¹Ù¶ó´ø °ÍÀΰ¡? 1.2 ¿ë¾î 1.3 ¿¹Á¦ ¾Ë°í¸®Áò AID CDATA sec_ExampleAlgorithm(LABEL)LABEL 1.4 ÀÌ ¹®¼­ÀÇ ±¸¼º 2. SMP ¸®´ª½º 2.1 SMP Çϵå¿þ¾î(Hardware) 2.1.1 °¢ ÇÁ·Î¼¼¼­°¡ µ¶ÀÚÀûÀÎ L2 ij½Ã¸¦ °¡Áö´Â°¡?(Does each processor have its own L2 cache?) 2.1.2 ¹ö½º ¼³Á¤(Bus configuration)? 2.1.3 ¸Þ¸ð¸® Áßø°ú DRAM ±â¼ú(Memory interleaving and DRAM technologies)? 2.2 °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼Ò°³AID CDATA sec_IntroductionToSharedMemoryProgramming(LABEL)LABEL 2.2.1 ¸ðµÎ °øÀ¯Çϱ⠴ë ÀϺθ¦ °øÀ¯Çϱâ(Shared Everything Vs. Shared Something) 2.2.1.1 ¸ðµÎ °øÀ¯Çϱâ(Shared Everything) 2.2.1.2 ÀϺθ¦ °øÀ¯Çϱâ(Shared Something) 2.2.2 ¿øÀÚ¼º°ú ¼ø¼­(Atomicity And Ordering) 2.2.3 Èֹ߼º(Volatility) 2.2.4 ¶ô(Locks) 2.2.5 ij½Ã¶óÀÎ Å©±â(Cache Line Size) 2.2.6 ¸®´ª½º ½ºÄÉÁÙ·¯ ³íÁ¡(Linux Scheduler Issues) 2.3 bb_threads 2.4 LinuxThreads 2.5 System V °øÀ¯ ¸Þ¸ð¸® 2.6 ¸Þ¸ð¸® ¸Ê È£ÃâAID CDATA sec_MemoryMapCall(LABEL)LABEL 3. ¸®´ª½º ½Ã½ºÅÛÀÇ Å¬·¯½ºÅÍ(Clusters Of Linux Systems) 3.1 ¿Ö Ŭ·¯½ºÅÍÀΰ¡(Why A Cluster)? 3.2 ³×Æ®¿÷ Çϵå¿þ¾î(Network Hardware)AID CDATA sec_NetworkHardware(LABEL)LABEL 3.2.1 ¾ÆÅ©³Ý(ArcNet) 3.2.2 ATM 3.2.3 CAPERS 3.2.4 ÀÌ´õ³Ý(Ethernet) 3.2.5 ÀÌ´õ³Ý(ÆнºÆ® ÀÌ´õ³Ý, Fast Ethernet) 3.2.6 ÀÌ´õ³Ý(±â°¡ºñÆ® ÀÌ´õ³Ý,Gigabit Ethernet) 3.2.7 FC (±¤¼¶À¯ ä³Î, Fibre Channel) 3.2.8 ÆÄÀ̾î¿ÍÀ̾î(FireWire, IEEE 1394) 3.2.9 HiPPI°ú ½Ã·¯¾ó HiPPI 3.2.10 IrDA (Àû¿Ü¼± µ¥ÀÌÅÍ ¿¬ÇÕ; Infrared Data Association) 3.2.11 Myrinet 3.2.12 ÆĶó½ºÅ×À̼Ç(Parastation) 3.2.13 PLIP 3.2.14 SCI 3.2.15 SCSI 3.2.16 ¼­¹ö³Ý(ServerNet) 3.2.17 SHRIMP 3.2.18 SLIP 3.2.19 TTL_PAPERS 3.2.20 USB (Universal Serial Bus) 3.2.21 WAPERS 3.3 ³×Æ®¿÷ ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍÆäÀ̽º(Network Software Interface) 3.3.1 ¼ÒÄÏ 3.3.1.1 UDP ÇÁ·ÎÅäÄÝ (SOCK_DGRAM) 3.3.1.2 TCP ÇÁ·ÎÅäÄÝ(SOCK_STREAM) 3.3.2 ÀåÄ¡ ±¸µ¿±â(Device Drivers) 3.3.3 »ç¿ëÀÚ-·¹º§ ¶óÀ̺귯¸®(User-Level Libraries) 3.4 PVM (º´·Ä °¡»ó ±â°è, Parallel Virtual Machine) 3.5 MPI (¸Þ½ÃÁö Àü´Þ ÀÎÅÍÆäÀ̽º, Message Passing Interface)AID CDATA sec_MPI(LABEL)LABEL 3.6 AFAPI (ÁýÇÕ ÇÔ¼ö API, Aggregate Function API) 3.7 ´Ù¸¥ Ŭ·¯½ºÅÍ Áö¿ø ¶óÀ̺귯¸®µé 3.7.1 Condor (ÇÁ·Î¼¼½º ÀÌÁÖ Áö¿ø, process migration support) 3.7.2 DFN-RPC (German Research Network - Remote Procedure Call) 3.7.3 DQS (ºÐ»ê Å¥À× ½Ã½ºÅÛ, Distributed Queueing System) 3.8 ÀÏ¹Ý Å¬·¯½ºÅÍ Âü°íÀÚ·á 3.8.1 Beowulf 3.8.2 Linux/AP+ 3.8.3 Locust 3.8.4 Midway DSM (Distributed Shared Memory) 3.8.5 Mosix 3.8.6 NOW (Network Of Workstations) 3.8.7 ¸®´ª½º¸¦ »ç¿ëÇÏ´Â º´·Ä ó¸®(Parallel Processing Using Linux) 3.8.8 ÆæƼ¾ö ÇÁ·Î Ŭ·¯½ºÅÍ ¿öÅ©¼¥(Pentium Pro Cluster Workshop) 3.8.9 TreadMarks DSM (Distributed Shared Memory) 3.8.10 U-Net (User-level NETwork interface architecture) 3.8.11 WWT (Wisconsin Wind Tunnel) 4. ÇϳªÀÇ ·¹Áö½ºÅÍÀ§¿¡¼­ÀÇ SIMD(¿¹: MMX »ç¿ë) 4.1 SWAR: ¾îµð¿¡ ÁÁÀº °ÍÀÌ°¡(What Is It Good For)? 4.2 SWAR ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼Ò°³(Introduction To SWAR Programming) 4.2.1 ´ÙÇü¼º ¿¬»ê(Polymorphic Operations) 4.2.2 ºÐÇÒµÈ ¿¬»ê(Partitioned Operations) 4.2.2.1 ºÐÇÒµÈ ¸í·É¾î(Partitioned Instructions) 4.2.2.2 ±³Á¤ Äڵ带 °¡Áö´Â ºÐÇÒµÇÁö ¾ÊÀº ¿¬»ê(Unpartitioned Operations With Correction Code) 4.2.2.3 ÇÊµå ¼öÄ¡ Á¦¾î(Controlling Field Values) 4.2.3 Åë½Å°ú ŸÀÔ º¯È¯ ¿¬»ê(Communication & Type Conversion Operations) 4.2.4 ¼øȯ ¿¬»ê(Recurrence Operations) (Ãà¼Ò, ½ºÄµ µî) 4.3 ¸®´ª½º¿¡¼­ÀÇ MMX SWAR 5. ¸®´ª½º°¡ È£½ºÆ®ÇÏ´Â ºÎ¼Ó ÇÁ·Î¼¼¼­(Linux-Hosted Attached Processors) 5.1 ¸®´ª½º PC´Â ÁÁÀº È£½ºÆ®ÀÌ´Ù(A Linux PC Is A Good Host) 5.2 ±×°Í¿¡ DSP¸¦ Àû¿ëÇߴ°¡(Did You DSP That)? 5.3 FPGAs°ú Àç¼³Á¤ °¡´ÉÇÑ ³í¸® ¿¬»ê 6. ÀϹÝÀûÀÎ °ü½É°Å¸® Áß¿¡¼­ 6.1 ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í ÄÄÆÄÀÏ·¯ 6.1.1 Fortran 66/77/PCF/90/HPF/95 6.1.2 GLU (Granular Lucid) 6.1.3 Jade¿Í SAM 6.1.4 Mentat°ú Legion 6.1.5 MPL (MasPar ÇÁ·Î±×·¡¹Ö ¾ð¾î) 6.1.6 PAMS (º´·Ä ¾îÇø®ÄÉÀÌ¼Ç °ü¸® ½Ã½ºÅÛ(Parallel Application Management System)) 6.1.7 Parallaxis-III 6.1.8 pC++/Sage++ 6.1.9 SR (¸®¼Ò½º µ¿±â(Synchronizing Resources)) 6.1.10 ZPL°ú IronMan 6.2 ¼º´É ¹®Á¦(Performance Issues) AID CDATA sec_PerformanceIssues(LABEL)LABEL 6.3 °á·Ð - °Å±â¿¡ ÀÖ´Ù. ______________________________________________________________________ 1. ¼Ò°³ º´·Äó¸®(Parallel Processing)´Â ÇÁ·Î±×·¥À» µ¿½Ã¿¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ¿©·¯ Á¶°¢À¸·Î ³ª´©¾î °¢ÀÚ ÀÚ½ÅÀÇ ÇÁ·Î¼¼¼­¿¡¼­ ½ÇÇàÇÔÀ¸·Î½á ÇÁ·Î±×·¥ ¼öÇà ¼Óµµ¸¦ ºü¸£°Ô ÇÑ´Ù´Â °³³äÀÌ´Ù. ÇÁ·Î±×·¥À» N°³ÀÇ ÇÁ·Î¼¼¼­¿¡¼­ ½ÇÇàÇϸé ÇϳªÀÇ ÇÁ·Î¼¼¼­ ½ÇÇàÇÏ´Â °Íº¸´Ù N¹è±îÁö »¡¶óÁú ¼ö ÀÖ´Ù. ¿À·§µ¿¾È Ưº°È÷ µðÀÚÀÎÇÑ "º´·Ä ÄÄÇ»ÅÍ(parellel computer)"¿¡¼­ ¿©·¯°³ÀÇ ÇÁ·Î¼¼¼­¸¦ »ç¿ëÇÒ ¼ö ÀÖ¾ú´Ù. ÀÌ·± °æÇâ¿¡ µû¶ó ¸®´ª½º´Â ÇöÀç ÇϳªÀÇ ÄÄÇ»ÅÍ ³»¿¡¼­ ¿©·¯°³ÀÇ ÇÁ·Î¼¼¼­°¡ °°Àº ¸Þ¸ð¸®¿Í ¹ö½º ÀÎÅÍÆäÀ̽º¸¦ °øÀ¯ÇÏ´Â SMP ½Ã½ºÅÛ(Á¾Á¾ "¼­¹ö"·Î Æȸ®´Â)À» Áö¿øÇÑ´Ù. ÀÌ ¿Ü¿¡µµ ¿©·¯´ëÀÇ ÄÄÇ»Å͸¦ ±×·ìÀ» Áö¾î (¿¹¸¦ µé¾î °¢°¢ ¸®´ª½º¸¦ ½ÇÇàÇÏ°í ÀÖ´Â PCµéÀÇ ±×·ì) ³×Æ®¿÷À¸·Î ¼­·Î ¿¬°áÇÏ¿© º´·Äó¸® Ŭ·¯½ºÅÍ(parellel- processing cluster)¸¦ ¸¸µé ¼ö ÀÖ´Ù. ¸®´ª½º¸¦ ÀÌ¿ëÇÑ º´·Ä ÄÄÇ»ÆÃÀÇ ¼¼¹ø° ¹æ¹ýÀº ¸ÖƼ¹Ìµð¾î È®Àå ¸í·É¾î(multimedia instruction extensions, MMX)¸¦ »ç¿ëÇÏ¿© ¼ýÀÚ µ¥ÀÌÅÍ º¤Å͸¦ º´·Ä·Î ó¸®ÇÏ´Â °ÍÀÌ´Ù. ¸¶Áö¸·À¸·Î ¸®´ª½º ½Ã½ºÅÛÀ» Àü¿ëÀ¸·Î ºÎ¼Ó º´·Äó¸® ¿£Áø(attached parellel processing compute engine)ÀÇ "È£½ºÆ®"·Î »ç¿ëÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ÀÌ ¹®¼­¿¡¼­´Â ÀÌ ¸ðµç Á¢±Ù¹æ¹ýµéÀ» ÀÚ¼¼È÷ ´Ù·çµµ·Ï ÇÏ°Ú´Ù. 1.1. º´·Ä󸮰¡ ³»°¡ ¹Ù¶ó´ø °ÍÀΰ¡? ¿©·¯°³ÀÇ ÇÁ·Î¼¼¼­¸¦ »ç¿ëÇÏ´Â °ÍÀº ¸¹Àº ¿¬»êÀÇ Ã³¸®ÇÏ´Â ¼Óµµ¸¦ ºü¸£°Ô ÇÒ ¼ö ÀÖÁö¸¸, ´ëºÎºÐÀÇ ÀÀ¿ëÇÁ·Î±×·¥µéÀº º´·Ä󸮶ó°í Çؼ­ ¾ÆÁ÷ ³ª¾ÆÁö´Â°Ô ¾ø´Ù. ±âº»ÀûÀ¸·Î º´·Ä󸮴 ´ÙÀ½ °æ¿ì¿¡ ÇØ´çÇÒ ¶§ Àû´çÇÏ´Ù : o ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¿©·¯°³ÀÇ ÇÁ·Î¼¼¼­¸¦ È¿°úÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï º´Ç༺À» °¡Áö°í ÀÖ¾î¾ß ÇÑ´Ù. ¾î´ÀÁ¤µµ ÀÌ´Â ÇÁ·Î±×·¥ Áß¿¡¼­ °¢±â ´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­ µ¶¸³ÀûÀ¸·Î µ¿½Ã¿¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ºÎºÐµéÀ» ÆľÇÇÏ´Â ¹®Á¦ÀÌ´Ù. ƯÁ¤ ½Ã½ºÅÛÀ» »ç¿ëÇÏ¿© º´·Ä·Î ½ÇÇàÇÏ´Â °æ¿ì, ¾î¶² °ÍµéÀº º´·Ä·Î ½ÇÇàÇÏ´Â°Ô ½ÇÁ¦·Î ´õ ´À¸° °æ¿ì°¡ ÀÖÀ» ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ÇϳªÀÇ ÄÄÇ»ÅÍ¿¡¼­ 4ÃÊ°¡ °É¸®´Â ÇÁ·Î±×·¥ÀÌ ³× ´ëÀÇ ÄÄÇ»ÅÍ¿¡¼­ °¢°¢ 1Ãʸ¸¿¡ ½ÇÇàÀ» ³¡³½´Ù ÇÏ´õ¶óµµ, À̵é ÄÄÇ»ÅÍ°¡ ¼­·ÎÀÇ µ¿ÀÛÀ» ÅëÇÕÇϴµ¥ 3Ãʳª ±× ÀÌ»óÀÇ ½Ã°£ÀÌ °É¸°´Ù¸é ¾Æ¹«·± ¼Óµµ°³¼±ÀÌ ÀÌ·ç¾îÁöÁö ¾Ê´Â´Ù. o °ü½ÉÀ» °¡Áö°í Àִ ƯÁ¤ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ÀÌ¹Ì º´·ÄÈ­(º´·Äó¸®ÀÇ ÀÌÁ¡À» È°¿ëÇÏ¿© ´Ù½Ã ÀÛ¼ºµÈ) µÇ¾ú°Å³ª, º´·Äó¸®ÀÇ ÀÌÁ¡À» È°¿ëÇÏ´Â ÃÖ¼ÒÇÑÀÇ »õ·Î¿î ÄÚµùÀ» ÇÏ·Á°í ÇØ¾ß ÇÑ´Ù. o ¿¬±¸ºÐ¾ß¿¡ °ü½ÉÀְųª ¾î´ÀÁ¤µµ Àͼ÷ÇÑ »ç¶÷ÀÌ º´·Ä󸮸¦ Æ÷ÇÔÇϵµ·Ï ³ª¼­¾ß ÇÑ´Ù. ¸®´ª½º ½Ã½ºÅÛÀ» ÀÌ¿ëÇÑ º´·Ä󸮰¡ ¹Ýµå½Ã ¾î·Á¿î °ÍÀº ¾ÊÁö¸¸, ´ëºÎºÐÀÇ ÄÄÇ»ÅÍ »ç¿ëÀÚ¿¡°Õ Ä£¼÷ÇÏÁö ¾Ê°í, "¾Æ¹«°Íµµ ¸ð¸£´Â »ç¶÷µéÀ» À§ÇÑ º´·Äó¸®"°°Àº Ã¥µµ ¾ÆÁ÷ ¾ø´Â »óȲÀÌ´Ù. ÀÌ HOWTO ¹®¼­°¡ ¾Ë¾Æ¾ß ÇÒ ¸ðµç°ÍÀº °¡Áö°í ÀÖÁø ¾Ê´õ¶óµµ ÁÁÀº Ãâ¹ßÁ¡ÀÌ µÉ °ÍÀÌ´Ù. ÁÁÀº ¼Ò½ÄÀº À§ÀÇ ³»¿ëÀÌ ¸ðµÎ ÇØ´çÇÑ´Ù¸é, º¹ÀâÇÑ °è»êÀ» ¼öÇàÇϰųª ¹æ´ëÇÑ µ¥ÀÌÅ͸¦ ó¸®ÇÏ´Â ÇÁ·Î±×·¥ÀÇ °æ¿ì, ¸®´ª½º¸¦ ÀÌ¿ëÇÑ º´·Ä󸮰¡ ½´ÆÛÄÄÇ»ÅͱÞÀÇ ¼º´ÉÀ» ¹ßÈÖÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ´õ±º´Ù³ª ±×°Íµµ ´ç½ÅÀÌ ÀÌ¹Ì °¡Áö°í ÀÖÀ» °ª½Ñ Çϵå¿þ¾î¸¦ »ç¿ëÇÏ¿© ÇÒ ¼ö ÀÖ´Ù. º¸³Ê½º·Î º´·Ä ¸®´ª½º ½Ã½ºÅÛÀÌ ¹Ù»Ú°Ô º´·Ä ÀÛ¾÷À» ¼öÇàÇÏ°í ÀÖÁö ¾ÊÀ» ¶§´Â ´Ù¸¥ ¿ëµµ·Î ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. º´·Ä󸮰¡ ´ç½ÅÀÌ ¹Ù¶ó´ø °ÍÀÌ ¾Æ´Ï´õ¶óµµ ¾î´ÀÁ¤µµ ¼Ò¼ÒÇÑ ¼º´ÉÇâ»óÀ» ¹Ù¶õ´Ù¸é, ¿©ÀüÈ÷ ÇÒ ¼ö ÀÖ´Â ÀÏÀÌ ¸î°¡Áö ÀÖ´Ù. ¿¹¸¦ µé¾î, ¼øÂ÷󸮸¦ ÇÏ´Â ÇÁ·Î±×·¥µéÀº ºü¸¥ ÇÁ·Î¼¼¼­¸¦ »ç¿ëÇÏ°í, ¸Þ¸ð¸®¸¦ Ãß°¡ÇÏ°í, IDE µð½ºÅ©¸¦ ºü¸¥ ¿ÍÀ̵å SCSI µð½ºÅ©·Î ¹Ù²Ù´Â µîÀÇ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ç½ÅÀÌ °ü½ÉÀ» °¡Áö´Â °ÍÀÌ À̰Ŷó¸é ¹Ù·Î ``¼º´É ¹®Á¦''ÀåÀ¸·Î ³Ñ¾î°¡°í, ±×·¸Áö ¾ÊÀ¸¸é °è¼Ó ÀоîÁֱ⠹ٶõ´Ù. º´·Ä 󸮰¡ ¿©·¯ºÐÀÌ ¿øÇÏ´Â °ÍÀÌ ¾Æ´Ï´õ¶óµµ ¿©·¯ºÐÀÌ Àû¾îµµ °¡Àå ¿Â°ÇÇÑ ¼º´É °³¼±À» ÇÏ°íÀÚ ÇÑ´Ù¸é ¿©·¯ºÐÀÌ ÇÒ ¼ö ÀÖ´Â °ÍµéÀÌ ¾ÆÁ÷ ³²¾Æ ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ¿©·¯ºÐÀº Á» ´õ ºü¸¥ ÇÁ·Î¼¼¼­, ¸Þ¸ð¸® Ãß°¡, IDE µð½ºÅ©¸¦ ºü¸¥ ¿ÍÀ̵å SCSI·Î ¹Ù²Ù´Â µîÀÇ ÀÏÀ» ÇÔÀ¸·Î½á ½ÃÄö¼È ÇÁ·Î±×·¥µéÀÇ ¼º´ÉÀ» °³¼±ÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀÌ ¿©·¯ºÐÀÌ °ü½ÉÀÌ ÀÖ´Â ¸ðµç °ÍÀ̶ó¸é ¼½¼Ç ``¼º´É¿¡ ´ëÇÑ ³í¶õ''·Î Á¡ÇÁÇ϶ó; ±×·¸Áö ¾Ê´Ù¸é °è¼Ó Àб⠹ٶõ´Ù. 1.2. ¿ë¾î ¿©·¯ ÇØ µ¿¾È ¸¹Àº ½Ã½ºÅÛ¿¡¼­ º´·Ä󸮸¦ »ç¿ëÇØ¿ÔÁö¸¸, ´ëºÎºÐÀÇ ÄÄÇ»ÅÍ »ç¿ëÀÚµéÀº ¿©ÀüÈ÷ Á» ³¸¼³ °ÍÀÌ´Ù. µû¶ó¼­ º´·Äó¸®ÀÇ ¿©·¯ ¹æ¹ýµéÀ» »ìÆ캸±â Àü¿¡, ¸î°¡Áö ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â ¿ë¾îµé¿¡ Àͼ÷ÇØÁö´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù. SIMD (SMingle Instruction stream, Multiple Data stream, ´ÜÀÏ ¸í·É¾î, ´ÙÁß µ¥ÀÌÅÍ ½ºÆ®¸²) :" SIMD´Â ¸ðµç ÇÁ·Î¼¼¼­°¡ ¶È°°Àº ¿¬»êÀ» µ¿½Ã¿¡ ½ÇÇàÇÏÁö¸¸, °¢ ÇÁ·Î¼¼¼­°¡ ÀڽŸ¸ÀÇ µ¥ÀÌÅÍ¿¡ ´ëÇØ ¿¬»êÀ» ¼öÇàÇÒ ¼ö ÀÖ´Â º´·Ä ½ÇÇà ¸ðµ¨À» °¡¸®Å²´Ù. ÀÌ ¸ðµ¨Àº ¹è¿­ÀÇ ¸ðµç ¿ø¼Ò¿¡ ´ëÇؼ­ ¶È°°Àº ¿¬»êÀ» ¼öÇàÇÏ´Â °³³ä¿¡ ÀÚ¿¬È÷ µé¾î¸ÂÀ¸¸ç, µû¶ó¼­ Á¾Á¾ º¤Åͳª ¹è¿­ ó¸®¿Í °ü·ÃµÈ´Ù. ¸ðµç ¿¬»êÀÌ º»·¡ µ¿±âÈ­µÇ¾îÀÖÀ¸¹Ç·Î, SIMD ÇÁ·Î¼¼¼­°£ÀÇ »óÈ£ÀÛ¿ëÀº ´ëü·Î ½±°í È¿°úÀûÀ¸·Î ±¸ÇöÇÒ ¼ö ÀÖ´Ù. MIMD (Multiple Instruction stream, Multiple Data stream, ´ÙÁß ¸í·É¾î, ´ÙÁß µ¥ÀÌÅÍ ½ºÆ®¸²) :" MIMD´Â °¢ ÇÁ·Î¼¼¼­°¡ ±Ùº»ÀûÀ¸·Î µ¶¸³ÀûÀ¸·Î µ¿ÀÛÇÏ´Â º´·Ä ½ÇÇà ¸ðµ¨À» °¡¸®Å²´Ù. ÀÌ ¸ðµ¨Àº ÇÁ·Î±×·¥À» ±â´ÉÀûÀÎ Åä´ë¿¡ ¹ÙÅÁÇÏ¿© º´·Ä ½ÇÇàÇÒ ¼ö ÀÖ´Â °ÍÀ¸·Î ÂÉ°³´Â °³³ä¿¡ ´ëºÎºÐ ÀÚ¿¬½º·´°Ô µé¾î¸Â´Â´Ù. ¿¹¸¦ µé¾î, ÇÑ ÇÁ·Î¼¼¼­´Â »õ·Î¿î ¿£Æ®¸®¸¦ ±×·¡ÇÈ È­¸éÀ¸·Î ¸¸µé°í ÀÖÀ» ¶§, ´Ù¸¥ ÇÁ·Î¼¼¼­´Â µ¥ÀÌÅͺ£À̽º ÆÄÀÏÀ» °»½ÅÇÏ´Â °ÍÀÌ´Ù. ÀÌ´Â SIMD º¸´Ù´Â ´õ À¯¿¬ÇÑ ¸ðµ¨ÀÌÁö¸¸, ÇÑ ÇÁ·Î¼¼¼­ÀÇ ¿¬»ê°ú ´Ù¸¥ ÇÁ·Î¼¼¼­ÀÇ ¿¬»êÀÇ »ó´ë¼øÀ§°¡ ¹Ù²î´Â ½Ã°£ º¯È­·Î ÀÎÇÏ¿© ÇÁ·Î±×·¥ÀÌ ½ÇÆÐÇÒ ¼ö ÀÖ´Â °æÁÖ »óȲ(race conditions)¶ó´Â ¾Ç¸ùÀÇ µð¹ö±ëÀ» °¨¼öÇØ¾ß ÇÑ´Ù. SPMD (Single Program, Multiple Data, ´ÜÀÏ ÇÁ·Î±×·¥, ´ÙÁß µ¥ÀÌÅÍ) :" SPMD´Â MIMDÀÇ Á¦ÇÑµÈ ¹öÀüÀ¸·Î ¸ðµç ÇÁ·Î¼¼¼­°¡ °°Àº ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â °ÍÀÌ´Ù. SIMD¿Í´Â ´Þ¸®, SPMD Äڵ带 ½ÇÇàÇÏ´Â °¢ ÇÁ·Î¼¼¼­´Â ÇÁ·Î±×·¥À» ½ÇÇà °úÁ¤¿¡¼­ ´Ù¸¥ Á¦¾î È帧 °úÁ¤À» µû¸¦ ¼ö ÀÖ´Ù. Åë½Å ´ë¿ªÆø (Communication Bandwidth) : Åë½Å ½Ã½ºÅÛÀÇ ´ë¿ªÆøÀº µ¥ÀÌÅÍ Àü¼ÛÀ» ½ÃÀÛÇÑ ¶§ºÎÅÍ ¾î¶² ´ÜÀ§ÀÇ ½Ã°£µ¿¾È Àü¼ÛÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍÀÇ ÃÖ´ëÅ©±âÀÌ´Ù. Á÷·Ä ¿¬°á¿¡¼­´Â ´ë¿ªÆøÀ» ´ë°³ baud ¶Ç´Â ºñÆ®/ÃÊ (b/s)·Î Ç¥½ÃÇϴµ¥, ÀϹÝÀûÀ¸·Î ÀÌ°ÍÀÇ 1/10¿¡¼­ 1/8ÀÌ ¹ÙÀÌÆ®/ÃÊ (B/s)¿¡ ÇØ´çÇÑ´Ù. ¿¹¸¦ µé¾î, 1200 baud ¸ðµ©Àº ¾à 120 B/sÀÇ ¼Óµµ·Î Àü¼ÛÀ» ÇÏ°í, ¹Ý¸é¿¡ 155 Mb/s ATM ³×Æ®¿÷ ¿¬°áÀº À̺¸´Ù 130000¹è °¡·® ºü¸¥, ¾à 17 MB/sÀÇ ¼Óµµ·Î Àü¼ÛÀ» ÇÑ´Ù. Å« ´ë¿ªÆøÀº ÇÁ·Î¼¼¼­ »çÀÌ¿¡ Å« µ¥ÀÌÅÍ ºí·°À» È¿À²ÀûÀ¸·Î Àü¼ÛÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. Åë½Å Áöü (Communication Latency) : Åë½Å ½Ã½ºÅÛÀÇ Áöü(latency)´Â º¸³»°í ¹Þ´Â ¼ÒÇÁÆ®¿þ¾îÀÇ ¿À¹öÇìµå¸¦ Æ÷ÇÔÇÏ¿©, ÇÑ °´Ã¼¸¦ Àü¼ÛÇϴµ¥ °É¸®´Â ÃÖ¼ÒÇÑÀÇ ½Ã°£À» ¸»ÇÑ´Ù. Áöü´Â º´·Ä󸮿¡¼­ ¸Å¿ì Áß¿äÇѵ¥, º´·Ä ½ÇÇàÀ¸·Î ¼Óµµ¸¦ Çâ»ó½Ãų ¼ö ÀÖ´Â ÄÚµå Á¶°¢ÀÇ ÃÖ¼Ò ½ÇÇà ½Ã°£ÀÎ, ÃÖ¼Ò À¯¿ë ¾Ë°»ÀÌ Å©±â(minimum useful grain size)¸¦ °áÁ¤Çϱ⠶§¹®ÀÌ´Ù. ±âº»ÀûÀ¸·Î ÄÚµå Á¶°¢À» ½ÇÇàÇÏ´Â ½Ã°£ÀÌ °á°ú°ªÀ» Àü¼ÛÇÏ´Â ½Ã°£(Áï, Áöü)º¸´Ù ªÀ» ¶§, ±× ÄÚµå Á¶°¢À» °á°ú°ªÀ» ÇÊ¿ä·Î ÇÏ´Â ÇÁ·Î¼¼¼­¿¡¼­ Á÷·Ä·Î ½ÇÇàÇÏ´Â °ÍÀÌ º´·Ä·Î ½ÇÇàÇÏ´Â °Íº¸´Ù ´õ ºü¸£´Ù. Á÷·Ä·Î ½ÇÇàÇÏ´Â °ÍÀº Åë½Å ¿À¹öÇìµå°¡ ¾ø±â ¶§¹®ÀÌ´Ù. ¸Þ½ÃÁö Àü´Þ (Message Passing) : ¸Þ½ÃÁö Àü´ÞÀº º´·Ä ½Ã½ºÅÛ ³»ºÎ¿¡¼­ ÇÁ·Î¼¼¼­°£ÀÇ »óÈ£ÀÛ¿ëÀ» À§ÇÑ ¸ðµ¨ÀÌ´Ù. ÀϹÝÀûÀ¸·Î, ¸Þ½ÃÁö´Â ÇÑ ÇÁ·Î¼¼¼­¿¡ ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î¿¡¼­ ¸¸µé¾îÁö°í, »óÈ£¿¬°á ³×Æ®¿÷À» ÅëÇÏ¿© ´Ù¸¥ ÇÁ·Î¼¼¼­·Î Àü´ÞµÇ¾î, ¿©±â¼­ À̸¦ ¹Þ¾Æ ¸Þ½ÃÁö ³»¿ë¿¡ µû¶ó µ¿ÀÛÇÏ°Ô µÈ´Ù. °¢ ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â ¿À¹öÇìµå(Áöü)°¡ Ŭ ¼ö ÀÖÁö¸¸, ´ë°³ °¢ ¸Þ½ÃÁö°¡ ¾î´À Á¤µµ Å©±âÀÇ Á¤º¸¸¦ °¡Áú ¼ö ÀÖ´ÂÁö¿¡´Â °ÅÀÇ Á¦ÇÑÀ» µÎÁö ¾Ê´Â´Ù. ±×·¡¼­ ¸Þ½ÃÁö Àü´ÞÀº Å« ´ë¿ªÆøÀ» ÃÊ·¡Çϱ⵵ Çϸç, ÇÑ ÇÁ·Î¼¼¼­¿¡¼­ ´Ù¸¥ ÇÁ·Î¼¼¼­·Î Å« µ¥ÀÌÅÍ ºí·°À» Àü´ÞÇÏ´Â °ÍÀ» ¸Å¿ì È¿À²ÀûÀÎ ¹æ¹ýÀ¸·Î 󸮵µ·Ï µÇ¾î ÀÖ´Ù. ±×·¸Áö¸¸, °ªºñ½Ñ ¸Þ½ÃÁö Àü´Þ ¿¬»êÀÇ Çʿ並 ÃÖ¼ÒÈ­ÇÒ ¼ö ÀÖµµ·Ï, º´·Ä ÇÁ·Î±×·¥¿¡ ÀÖ´Â ÀڷᱸÁ¶´Â ÇÁ·Î¼¼¼­ °£¿¡ ³Î¸® ÆÛÁ® À־ °¢ ÇÁ·Î¼¼¼­°¡ ÂüÁ¶ÇÏ´Â ´ëºÎºÐÀÇ µ¥ÀÌÅÍ´Â ÀÚ½ÅÀÇ Áö¿ª ¸Þ¸ð¸® »ó¿¡ ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷À» µ¥ÀÌÅÍ ¹èÄ¡(data layout)¶ó°í ÇÑ´Ù. °øÀ¯ ¸Þ¸ð¸® (Shared Memory) : °øÀ¯ ¸Þ¸ð¸®´Â º´·Ä ½Ã½ºÅÛ ³»ºÎ¿¡¼­ ÇÁ·Î¼¼¼­°£ÀÇ »óÈ£ÀÛ¿ëÀ» À§ÇÑ ¸ðµ¨ÀÌ´Ù. ¸®´ª½º¸¦ ½ÇÇàÇÏ°í ÀÖ´Â ¸ÖƼÇÁ·Î¼¼¼­ ÆæƼ¾ö ÄÄÇ»ÅÍ°°Àº ½Ã½ºÅÛÀº ¹°¸®ÀûÀ¸·Î ÇÁ·Î¼¼¼­°£¿¡ ÇϳªÀÇ ´ÜÀÏ ¸Þ¸ð¸®¸¦ °øÀ¯ÇÑ´Ù. µû¶ó¼­ ÇÑ ÇÁ·Î¼¼¼­°¡ °øÀ¯ ¸Þ¸ð¸®¿¡ °ªÀ» ±â·ÏÇϸé, ´Ù¸¥ ¾î¶² ÇÁ·Î¼¼¼­µçÁö ÀÌ °ªÀ» Á÷Á¢ ÀÐÀ» ¼ö ÀÖ´Ù. ÀÌ¿Í ´Þ¸® ³í¸®ÀûÀÎ °øÀ¯ ¸Þ¸ð¸®´Â °¢ ÇÁ·Î¼¼¼­°¡ ÀڽŸ¸ÀÇ ¸Þ¸ð¸®¸¦ °¡Áö¸ç, Áö¿ª ¸Þ¸ð¸®¿¡ ¾ø´Â ¸Þ¸ð¸®¸¦ ÂüÁ¶Çϸé À̸¦ ÇØ´çÇÏ´Â ÇÁ·Î¼¼¼­°£ Åë½ÅÀ¸·Î º¯È¯ÇØÁÜÀ¸·Î½á ±¸ÇöÇÑ´Ù. ÀÌµé °¢°¢ÀÇ °øÀ¯ ¸Þ¸ð¸® ±¸ÇöÀº ÀϹÝÀûÀ¸·Î ¸Þ½ÃÁö Àü´Þº¸´Ù »ç¿ëÇϱ⠽±°Ô µÇ¾î ÀÖ´Ù. ¹°¸®ÀûÀÎ ¸Þ¸ð¸® °øÀ¯´Â Å« ´ë¿ªÆøÀ» °¡Áö¸ç Áöü°¡ ÀûÁö¸¸, ÀÌ´Â ´ÜÁö ¿©·¯ ÇÁ·Î¼¼¼­°¡ µ¿½Ã¿¡ ¹ö½º¿¡ Á¢±ÙÇÏ·ÁÇÏÁö ¾ÊÀ» ¶§¸¸ÀÌ´Ù. µû¶ó¼­ µ¥ÀÌÅÍ ¹èÄ¡(data layout)´Â ¿©ÀüÈ÷ ¼º´É¿¡ Å« ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖÀ¸¸ç, ij½Ã È¿°ú µîÀº ¾î¶»°Ô ¹èÄ¡ÇÏ´Â °ÍÀÌ °¡Àå ÁÁÀº °ÍÀÎÁö °áÁ¤Çϱâ Èûµé°Ô ¸¸µç´Ù. ÁýÇÕ ÇÔ¼ö (Aggregate Functions) : ¸Þ½ÃÁö Àü´Þ°ú °øÀ¯ ¸Þ¸ð¸® ¸ðµ¨¿¡¼­ Åë½ÅÀº ¸ðµÎ ÇϳªÀÇ ´ÜÀÏ ÇÁ·Î¼¼¼­¿¡¼­ ½ÃÀÛÇÑ´Ù. ÀÌ¿Í ¹Ý´ë·Î ÁýÇÕ ÇÔ¼ö Åë½ÅÀº º»·¡ ¸ðµç ÇÁ·Î¼¼¼­ ±×·ìÀÌ ¼­·Î ÀÛ¿ëÇÒ ¼ö ÀÖ´Â º´·Ä Åë½Å ¸ðµ¨ÀÌ´Ù. ÀÌ·± ÀÛ¿ëÀÇ °¡Àå °£´ÜÇÑ °ÍÀº À庮 µ¿±âÈ­(barrier synchronization)·Î, °³º° ÇÁ·Î¼¼¼­µéÀÌ ±×·ì¿¡ ÀÖ´Â ¸ðµç ÇÁ·Î¼¼¼­°¡ À庮¿¡ µµ´ÞÇÏ±æ ±â´Ù¸®´Â °ÍÀÌ´Ù. °³º° ÇÁ·Î¼¼¼­°¡ À庮¿¡ µµÂøÇϸ鼭 ºÎ¼öÈ¿°ú(side effect)·Î µ¥ÀÌÅ͸¦ Ãâ·ÂÇϸé, Åë½Å Çϵå¿þ¾î´Â ¸ðµç ÇÁ·Î¼¼¼­¿¡¼­ ¼öÁýÇÑ °ªµé¿¡ ÀÓÀÇÀÇ ÇÔ¼ö¸¦ Àû¿ëÇÑ °á°ú°ªÀ» °¢ ÇÁ·Î¼¼¼­¿¡°Ô Àü´ÞÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ±× °á°ú°ªÀº "¾î¶² ÇÁ·Î¼¼¼­°¡ Çظ¦ ã¾Ò´À³Ä"´Â Áú¹®ÀÇ ´ë´äÀÏ ¼öµµ, °¢ ÇÁ·Î¼¼¼­¿¡¼­ ¿Â °ªµéÀÇ ÇÕÀÏ ¼öµµ ÀÖ´Ù. Áöü(latency)´Â ¸Å¿ì Àû°ÚÁö¸¸, ÇϳªÀÇ ÇÁ·Î¼¼¼­°¡ Â÷ÁöÇÏ´Â ´ë¿ªÆø ¿ª½Ã ÀûÀº °æÇâÀÌ ÀÖ´Ù. ÀüÅëÀûÀ¸·Î ÀÌ ¸ðµ¨Àº µ¥ÀÌÅÍ °ªÀ» ºÐ»êÇϱ⺸´Ù´Â º´·Ä ½ÇÇàÀ» Á¦¾îÇϴµ¥ ÁÖ·Î »ç¿ëµÈ´Ù. ÃÑ°ý Åë½Å (Collective Communication) : ÀÌ´Â ÁýÇÕ ÇÔ¼ö(aggregate function)ÀÇ ´Ù¸¥ À̸§À¸¸£, ´ëºÎºÐ ´ÙÁß ¸Þ½ÃÁö Àü´Þ ¿¬»êÀ» ÀÌ¿ëÇÏ¿© ±¸ÃàµÈ ÁýÇÕ ÇÔ¼ö¸¦ °¡¸®Å°´Âµ¥ »ç¿ëµÈ´Ù. SMP (Symmetric Multi-Processor, ´ëĪÇü ¸ÖƼÇÁ·Î¼¼¼­) SMP´Â ÀÏ·ÃÀÇ ÇÁ·Î¼¼¼­µéÀÌ ¼­·Î ´ëµîÇÏ°Ô ÇÔ²² µ¿ÀÛÇÏ¿©, ¾î¶² ÀÛ¾÷ Á¶°¢À̵çÁö ¾î¶² ÇÁ·Î¼¼¼­¿¡¼­µç ¶È°°ÀÌ ½ÇÇàµÉ ¼ö ÀÖ´Â ¿î¿µÃ¼Á¦ °³³äÀ» ¸»ÇÑ´Ù. ´ëü·Î SMP´Â MIMD¿Í °øÀ¯¸Þ¸ð¸®¸¦ °áÇÕÇÑ °ÍÀÌ´Ù. IA32 °è¿­¿¡¼­ SMP´Â ÀϹÝÀûÀ¸·Î MPS(Intel Multi-Processor Specification, ÀÎÅÚ ¸ÖƼÇÁ·Î¼¼¼­ ±Ô¾à)¿Í ȣȯµÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¾ÕÀ¸·Î´Â ÀÌ°ÍÀº "Slot 2"¸¦ ÀǹÌÇÏ°Ô µÉ °ÍÀÌ´Ù... SWAR (SIMD Within A Register, ·¹Áö½ºÅÍ¿¡¼­ÀÇ SIMD) : SWAR´Â ÇϳªÀÇ ·¹Áö½ºÅ͸¦ ¿©·¯°³ÀÇ Á¤¼ö Ç׸ñÀ¸·Î ÂÉ°³°í ·¹Áö½ºÅÍ ³ÊºñÀÇ ¿¬»êÀ» »ç¿ëÇÏ¿© À̵é Ç׸ñµé¿¡ SIMD º´·Ä °è»êÀ» ¼öÇàÇÑ´Ù´Â °³³äÀ» °¡¸®Å°´Â ÀϹÝÀûÀÎ ¿ë¾îÀÌ´Ù. k-bit ·¹Áö½ºÅÍ¿Í µ¥ÀÌÅÍ Åë·Î, ÇÔ¼ö ´ÜÀ§¸¦ °®´Â ±â°è°¡ ÀÖÀ» ¶§, ¿À·¡ÀüºÎÅÍ º¸ÅëÀÇ ·¹Áö½ºÅÍ ¿¬»êÀ» »ç¿ëÇÏ¿© n°³ÀÇ k/n ºñÆ® Ç׸ñ °ª¿¡ SIMD º´·Ä ¿¬»êÀ» ÇÒ ¼ö ÀÖ´Ù°í ¾Ë·ÁÁ®¿Ô´Ù. ÀÌ·± ¹æ½ÄÀÇ º´·Ä¼ºÀº º¸ÅëÀÇ Á¤¼ö ·¹Áö½ºÅ͸¦ »ç¿ëÇÏ¿© ±¸ÇöÇÒ ¼ö ÀÖÁö¸¸, ¸¹Àº °í¼º´É ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­µéÀº ¸ÖƼ¹Ìµð¾î À§ÁÖ ÀÛ¾÷¿¡ ÀÌ ±â¹ýÀÇ ¼º´ÉÀ» ³ôÀ̱â À§ÇØ Ãֱ٠Ưº° ¸í·É¾îµéÀ» Ãß°¡Çß´Ù. ÀÎÅÚ/AMD/CyrixÀÇ MMX(MultiMedia eXtension)¸¦ ºñ·ÔÇÏ¿©, µðÁöÅÐ(Digital) AlphaÀÇ MAX(MultimediA eXtensions), ÈÞ·¿- ÆÑÄ¿µå(Hewlett-Packard) PA- RISCÀÇ MAX(Multimedia Acceleration eXtensions), MIPSÀÇ MDMX(Digital Media eXtension, "Mad Max"¶ó°í ¹ßÀ½ÇÑ´Ù), ¼±(Sun) SPARCÀÇ V9 VIS(Visual Instruction Set) µîÀÌ ÀÖ´Ù. MMX¿¡ µ¿ÀÇÇÑ ¼¼ ȸ»ç¸¦ Á¦¿ÜÇÏ°í, À̵é È®Àå ¸í·É¾îµéÀº ´ëÃæÀº ºñ½ÁÇÏÁö¸¸, ¼­·Î ȣȯµÇÁö´Â ¾Ê´Â´Ù. ºÎ¼Ó ÇÁ·Î¼¼¼­ (Attached Processors) : ºÎ¼Ó ÇÁ·Î¼¼¼­´Â º»ÁúÀûÀ¸·Î Ưº°ÇÑ À¯ÇüÀÇ °è»ê ¼Óµµ¸¦ °¡¼ÓÇϱâ À§ÇÑ È£½ºÆ® ½Ã½ºÅÛ¿¡ ¿¬°áµÈ Ưº°ÇÑ ¸ñÀûÀ» °¡Áø ÄÄÇ»ÅÍÀÌ´Ù. ¿¹¸¦ µé¾î, PC¿¡ ÀÖ´Â ¸¹Àº ºñµð¿À¿Í ¿Àµð¿À Ä«µå´Â Á¦°¢±â ÀÏ¹Ý ±×·¡ÇÈ ¿¬»ê°ú ¿Àµð¿À DSP(Digital Signal Processing, µðÁöÅÐ ½ÅÈ£ ó¸®) ¼Óµµ¸¦ ³ôÀ̵µ·Ï µðÀÚÀÎµÈ ºÎ¼Ó ÇÁ·Î¼¼¼­¸¦ °¡Áö°í ÀÖ´Ù. ¶ÇÇÑ ¹è¿­¿¡ ´ëÇÑ »ê¼ú ¿¬»ê ¼Óµµ¸¦ ºü¸£°Ô Çϱâ À§ÇÑ, ³ÐÀº ¹üÀ§ÀÇ ºÎ¼Ó ¹è¿­ ÇÁ·Î¼¼¼­(attached array processor)µéÀÌ ÀÖ´Ù. ¸¹Àº »ó¾÷¿ë ½´ÆÛÄÄÇ»Å͵éÀº ½ÇÁ¦·Î ¿öµå½ºÅ×ÀÌ¼Ç È£½ºÆ®¿Í ºÎ¼Ó ÇÁ·Î¼¼¼­·Î µÇ¾î ÀÖ´Ù. RAID (Redundant Array of Inexpensive Disk, ¿©ºÐÀÇ °ª½Ñ µð½ºÅ© ¹è¿­) :" RAID´Â µð½ºÅ© I/OÀÇ ½Å·Ú¼º°ú ´ë¿ªÆøÀ» ´Ã¸®´Â °£´ÜÇÑ ±â¼úÀÌ´Ù. ¿©±â¿¡´Â ¿©·¯°¡Áö ¼­·Î ´Ù¸¥ º¯ÇüÀÌ ÀÖÁö¸¸, ¸ðµÎ µÎ°¡Áö ÇÙ½É °³³äÀ» °øÀ¯ÇÏ°í ÀÖ´Ù. ¸ÕÀú, °¢ µ¥ÀÌÅÍ ºí·°Àº n+k µð½ºÅ© µå¶óÀÌºê ±×·ìÀ¸·Î ÁÙÀ» Áö¾î, °¢ µå¶óÀ̺ê´Â ´ÜÁö µ¥ÀÌÅÍÀÇ 1/n ¸¸Å­ ÀÐ°í ¾²±â¸¸ ÇÏÁö¸¸, °¢ µå¶óÀÌºê ´ë¿ªÆøÀÇ n¹èÀÇ ´ë¿ªÆøÀ» °¡Áö°Ô µÈ´Ù. µÎ¹ø°·Î, ¿©ºÐÀ¸·Î µ¥ÀÌÅ͸¦ ±â·ÏÇÏ¿©, ÇÑ µð½ºÅ© µå¶óÀ̺갡 ½ÇÆÐÇÏ´õ¶óµµ µ¥ÀÌÅ͸¦ º¹±¸ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÀÌ°ÍÀº ¸Å¿ì Áß¿äÇѵ¥, ±×·¸Áö ÇÏÁö ¾ÊÀ¸¸é n+k µå¶óÀ̺ê Áß Çϳª°¡ ½ÇÆÐÇÑ °æ¿ì Àüü ÆÄÀÏ ½Ã½ºÅÛÀÌ ³¯¶ó°¥ ¼ö Àֱ⠶§¹®ÀÌ´Ù. http://www.dpt.com/uraiddoc.html¿¡ °¡¸é RAID Àü¹Ý¿¡ °üÇÑ ÁÁÀº °³¿ä°¡ ÀÖ´Ù. ¸®´ª½º ½Ã½ºÅÛ¿¡¼­ÀÇ RAID ¿É¼Ç¿¡ ´ëÇÑ Á¤º¸´Â http://linas.org/linux/raid.html¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. Àü¹® RAID Çϵå¿þ¾î Áö¿ø°ú´Â º°µµ·Î, ¸®´ª½º´Â ÇϳªÀÇ ¸®´ª½º ½Ã½ºÅÛÀÌ ¿©·¯°³ÀÇ µð½ºÅ©¸¦ È£½ºÆ®ÇÏ´Â ¼ÒÇÁÆ®¿þ¾î RAID 0, 1, 4, 5µµ Áö¿øÇÑ´Ù. ÀÚ¼¼ÇÑ °ÍÀº ¼ÒÇÁÆ®¿þ¾î RAID mini-HOWTO¿Í ´ÙÁß µð½ºÅ© Æ©´×(Multi-Disk Tuning) mini-HOWTO¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. Ŭ·¯½ºÅÍ¿¡ ÀÖ´Â ¿©·¯ ±â°è¿¡ ÀÖ´Â µð½ºÅ© µå¶óÀ̺êµéÀÇ RAID´Â Á÷Á¢ÀûÀ¸·Î Áö¿øµÇÁö ¾Ê´Â´Ù. IA32 (Intel Architecture, 32-bit, ÀÎÅÚ 32ºñÆ® ¾ÆÅ°ÅØÃÄ) : IA32´Â ½ÇÁ¦·Î º´·Äó¸®ÇÏ°í´Â °ü·ÃÀÌ ¾ø°í, ´ÜÁö ÀϹÝÀûÀ¸·Î ÀÎÅÚ 386 ÇÁ·Î¼¼¼­¿Í ȣȯµÈ´Â ¸í·É¾î ÁýÇÕÀ» °¡Áö´Â ÇÁ·Î¼¼¼­µéÀÇ ºÎ·ù¸¦ °¡¸®Å²´Ù. ±âº»ÀûÀ¸·Î, 286 ´ÙÀ½¿¡ ³ª¿Â ¸ðµç ÀÎÅÚ x86 ÇÁ·Î¼¼¼­´Â IA32ÀÇ Æ¯Â¡ÀÎ 32ºñÆ® Ç÷§ ¸Þ¸ð¸® ¸ðµ¨(flat memory model)°ú ȣȯµÈ´Ù. AMD¿Í Cyrix ¿ª½Ã ¼ö¸¹Àº IA32 ȣȯ ÇÁ·Î¼¼¼­¸¦ ¸¸µç´Ù. ¸®´ª½º°¡ ÁÖ·Î IA32 ÇÁ·Î¼¼¼­¿¡¼­ ¹ßÀüÇØ¿ÔÀ¸¸ç, IA32°¡ »óÇ°½ÃÀåÀÇ Á߽ɿ¡ Àֱ⠶§¹®¿¡, PowerPC³ª Alpha, PA-RISC, MIPS, SPARC µîÀÇ ´Ù¸¥ ÇÁ·Î¼¼¼­¿Í ±¸º°ÇÏ¿© IA32¶ó´Â ¿ë¾î¸¦ »ç¿ëÇÏ´Â °ÍÀÌ Æí¸®ÇÏ´Ù. °ð Ãâ½ÃµÉ IA64(EPIC, Explicitly Parallel Instruction Computing, ¸í½ÃµÈ º´·Ä ¸í·É °è»êÀ» Áö¿øÇÏ´Â 64ºñÆ® ÇÁ·Î¼¼¼­)´Â ¾Æ¸¶µµ º¹ÀâÇÑ ¹®Á¦°¡ µÇ°ÚÁö¸¸, óÀ½ ³ª¿À°Ô µÉ IA64 ÇÁ·Î¼¼¼­ÀÎ ¸Ó¼¼µå(Merced)´Â 1999³â±îÁö´Â Á¦Ç°ÀÌ ³ª¿ÀÁø ¾ÊÀ» ¿¹Á¤ÀÌ´Ù. COTS (Commercial Off-The-Shelf, »ó¾÷¿ë ±â¼ºÇ°) ¸¹Àº º´·Ä ½´ÆÛÄÄÇ»ÅÍ È¸»çµéÀÌ »ç¶óÁö¸é¼­, COTS´Â º´·Ä °è»ê ½Ã½ºÅÛÀÇ ÇÊ¿äÁ¶°ÇÀ¸·Î ÀϹÝÀûÀ¸·Î ´Ù·ç¾îÁö°Ô µÇ¾ú´Ù. ¾ÆÁÖ ÀÌ·ÐÀûÀ¸·Î Çϸé, PC¸¦ »ç¿ëÇÏ´Â À¯ÀÏÇÑ COTS º´·Äó¸® ±â¹ýÀº SMP Windows NT ¼­¹ö¿Í ¿©·¯ MMX Windows ÀÀ¿ëÇÁ·Î±×·¥°°Àº °É·Î ¸¸µé¾îÁø °ÍÀÌ´Ù. COTS °³³äÀÇ ±â¹ÝÀº »ç½Ç»ó °³¹ß ½Ã°£°ú ºñ¿ëÀÇ ÃÖ¼ÒÈ­ÀÌ´Ù. µû¶ó¼­ ´õ À¯¿ëÇÏ°í, ´õ ÀϹÝÀûÀÎ, COTSÀÇ Àǹ̴ Àû¾îµµ ´ëºÎºÐÀÇ ¼­ºê½Ã½ºÅÛÀº ±â¼º Á¦Ç° ½ÃÀå¿¡¼­ À̵æÀ» ¾ò¾î¾ß ÇÏÁö¸¸, ´Ù¸¥ ±â¼úµéÀº È¿À²ÀûÀ¸·Î »ç¿ëµÉ ¼ö ÀÖ´Â °÷¿¡ »ç¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ´ëºÎºÐÀÇ °æ¿ì, COTS º´·Ä󸮴 ³ëµå´Â ±â¼º PCÀÌÁö¸¸ ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º¿Í ¼ÒÇÁÆ®¿þ¾î´Â ¾î´ÀÁ¤µµ ¸ÂÃãÀ¸·Î ¸¸µç Ŭ·¯½ºÅ͸¦ °¡¸®Å²´Ù. ´ë°³ ½ÇÇàÇÒ ¸®´ª½º¿Í ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå´Â ÀÚÀ¯·Ó°Ô ±¸ÇÒ ¼ö ÀÖÁö¸¸ (copyleftÀ̰ųª public domainÀÎ), ¹®ÀÚ ±×´ë·Î COTS´Â ¾Æ´Ï´Ù. 1.3. ¿¹Á¦ ¾Ë°í¸®Áò ÀÌ HOWTO¿¡¼­ ¾ð±ÞÇÏ°í ÀÖ´Â ¿©·¯°¡Áö º´·Ä ÇÁ·Î±×·¡¹Ö Á¢±Ù ¹æ¹ýµéÀÇ »ç¿ë¹ýÀ» Á» ´õ Àß ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï, ¿¹Á¦ ¹®Á¦¸¦ Çϳª ´Ù·ç¾îº¸µµ·Ï ÇÏÀÚ. ºñ·Ï °£´ÜÇÑ º´·Ä ¾Ë°í¸®ÁòÀÌÁö¸¸, ¿©·¯ ´Ù¸¥ º´·Ä ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀ» ½Ã¿¬Çϴµ¥ »ç¿ëÇØ¿Ô´ø ¾Ë°í¸®ÁòÀ» ¼±ÅÃÇÔÀ¸·Î½á, °¢ Á¢±Ù¹æ¹ýÀ» ºñ±³ÇÏ°í ´ëÁ¶ÇÏ´Â °ÍÀÌ Á¶±Ý ´õ ½¬¿ï °ÍÀÌ´Ù. M.J.QuinnÀÇ Ã¥ (Parallel Computing Theory And Prictice (º´·Ä °è»ê À̷аú ½Ç½À)); 2ÆÇ, McGraw Hill, New York, 1994¿¡¼­´Â, ´Ù¾çÇÑ ¼­·Î ´Ù¸¥ º´·Ä ½´ÆÛÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹Ö ȯ°æ(¿¹¸¦ µé¾î, nCUBE ¸Þ½ÃÁö Àü´Þ, ¼øÂ÷ °øÀ¯ ¸Þ¸ð¸®(sequent shared memory))À» ½Ã¿¬Çϱâ À§ÇØ, Pi °ªÀ» °è»êÇÏ´Â º´·Ä ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ°í ÀÖ´Ù. ÀÌ HOWTO¿¡¼­, ¿ì¸®µµ ¶È°°Àº ±âº» ¾Ë°í¸®ÁòÀ» »ç¿ëÇϵµ·Ï ÇÏÀÚ. ÀÌ ¾Ë°í¸®ÁòÀº xÀÇ Á¤»ç°¢Çü ¾Æ·¡¿¡ ÀÖ´Â ¿µ¿ªÀ» ÇÕÇÏ¿© PiÀÇ ±Ù»ç°ªÀ» °è»êÇÑ´Ù. ¼ø¼öÇÑ ¼øÂ÷ C ÇÁ·Î±×·¥À¸·Î ¸¸µç´Ù¸é ¾Ë°í¸®ÁòÀº ´ÙÀ½°ú ºñ½ÁÇÒ °ÍÀÌ´Ù. ______________________________________________________________________ #include ; #include ; main(int argc, char **argv) { register double width, sum; register int intervals, i; /* get the number of intervals */ intervals = atoi(argv[1]); width = 1.0 / intervals; /* do the computation */ sum = 0; for (i=0; i ½Ã½ºÅÛÀ» ¾î¶»°Ô »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö¿¡ °üÇØ °£´ÜÇÏ°Ô °³¿ä¸¦ Á¦½ÃÇÑ´Ù. SMP ¸®´ª½º¿¡ ´ëÇÑ °¡Àå ÃÖ±Ù Á¤º¸´Â ¾Æ¸¶µµ SMP ¸®´ª½º ÇÁ·ÎÁ§Æ®ÀÇ ¸ÞÀϸµ ¸®½ºÆ®¿¡¼­ ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ¸®½ºÆ®¿¡ °¡ÀÔÇÏ·Á¸é ÆíÁö º»¹®¿¡ subscribe linux-smp ¶ó°í Àû¾î majordomo@vger.rutgers.edu·Î ÆíÁö¸¦ º¸³»¸é µÈ´Ù. SMP ¸®´ª½º°¡ Á¤¸» Á¦´ë·Î µ¿ÀÛÇϴ°¡? 1996³â 6¿ù, ³ª´Â »õ·Î¿î »óÇ¥ÀÇ (»ç½ÇÀº Çѹ° °£ Ç°Á¾À̾úÁö¸¸ »õ »óÇ¥¿´´Ù ;-) µÎ°³ÀÇ 100MHz ÆæƼ¾ö ÇÁ·Î¼¼¼­¸¦ °¡Áö´Â ½Ã½ºÅÛÀ» ±¸ÀÔÇß´Ù. Á¶¸³À» ¸¶Ä£ ½Ã½ºÅÛÀº µÎ°³ÀÇ ÇÁ·Î¼¼¼­¿Í Asus ¸¶´õº¸´õ(motherboard), 256K ij½Ã, 32M RAM, 1.66G Çϵåµð½ºÅ©, 6¹è¼Ó CDROM, Stealth 64 ±×·¡ÇÈ Ä«µå¿Í 15ÀÎÄ¡ ¸ð´ÏÅÍ·Î, À̸¦ ¸¶·ÃÇϴµ¥ ¸ðµÎ 1800$°¡ µé¾ú´Ù. ÀÌ °¡°ÝÀº ÀÌ¿Í ºñ½ÁÇÑ »ç¾çÀÇ ÇÁ·Î¼¼¼­ ÇϳªÀÎ ½Ã½ºÅÛº¸´Ù ´ÜÁö ¸î¹é ´Þ·¯Á¤µµ ºñ½Ñ °Å¿´´Ù. Á¦´ë·Î µ¿ÀÛÇÏ´Â SMP ¸®´ª½º¸¦ ±¸ÇÒ·Á¸é, ±×Àú º¸ÅëÀÇ ´ÜÀÏ ÇÁ·Î¼¼¼­ ¸®´ª½º¸¦ ¼³Ä¡ÇÏ°í, makefile¿¡¼­ SMP=1À» ¸·°í ÀÖ´Â ÁÖ¼®À» ÇØÁ¦ÇÏ¿© (ºñ·Ï SMP¸¦ 1·Î ¼³Á¤ÇÏ´Â °ÍÀÌ Á¶±ÝÀº ¹Ý¾îÀûÀ̶ó´Â °ÍÀ» ¾ËÁö¸¸) Ä¿³ÎÀ» ´Ù½Ã ÄÄÆÄÀÏÇÏ°í, lilo¿¡°Ô »õ·Î¿î Ä¿³ÎÀ» ¾Ë·ÁÁֱ⸸ ÇÏ¸é µÈ´Ù. ÀÌ ½Ã½ºÅÛÀº ¸Å¿ì Àß µ¿ÀÛÇÏ¿´°í, ¾ÈÁ¤ÀûÀ̱⵵ ÇÏ¿©, Áö±Ý±îÁö »ç¿ëÇØ¿Â ³ªÀÇ ÁÖ ¿öÅ©½ºÅ×À̼ÇÀÇ ¿ªÇÒÀ» ¼öÇàÇϱ⿡ ÃæºÐÇß´Ù. ¿ä¾àÇϸé, SMP ¸®´ª½º´Â Á¤¸»·Î Á¦´ë·Î µ¿ÀÛÇÑ´Ù. ´ÙÀ½ Áú¹®Àº SMP ¸®´ª½º°¡ °øÀ¯ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â º´·Ä ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ°í ½ÇÇàÇÏ´Â µ¥ ÀÖ¾î ¾ó¸¸Å­À̳ª °í¼öÁØÀ¸·Î Áö¿øÀ» ÇØÁÖ´À³ÄÀÌ´Ù. 1996³â ÃÊ¿¡´Â ÀÌ·± °ÍÀº º°·Î ¸¹Áö ¾Ê¾Ò´Ù. ±×·¯³ª ÀÌÁ¦ ¸¹Àº °ÍÀÌ º¯Çß´Ù. ¿¹¸¦ µé¾î, ÀÌÁ¦´Â ¸Å¿ì ¿Ïº®ÇÑ POSIX ¾²·¹µå(thread) ¶óÀ̺귯¸®°¡ ÀÖ´Ù. °øÀ¯ ¸Þ¸ð¸® ¹æ½ÄÀ» »ç¿ëÇÏ´Â °Íº¸´Ù´Â ¼º´ÉÀÌ ¶³¾îÁú ¼öµµ ÀÖÁö¸¸, SMP ¸®´ª½º ½Ã½ºÅÛ¿¡¼­´Â ¿ø·¡ ¼ÒÄÏ Åë½ÅÀ» »ç¿ëÇÏ´Â ¿öÅ©½ºÅ×ÀÌ¼Ç Å¬·¯½ºÅÍ(cluster)¿¡¼­ µ¿ÀÛÇϵµ·Ï °³¹ßµÈ ´ëºÎºÐÀÇ º´·Ä ó¸® ¼ÒÇÁÆ®¿þ¾îµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¼ÒÄÏ(3.3 ÀåÀ» º¸¶ó) ¹æ½ÄÀº SMP ¸®´ª½º ½Ã½ºÅÛ »Ó¸¸ ¾Æ´Ï¶ó, ¿©·¯°³ÀÇ SMP ½Ã½ºÅÛÀ» ³×Æ®¿÷À¸·Î ¿¬°áÇÑ Å¬·¯½ºÅÍ¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¸Áö¸¸ ¼ÒÄÏÀº SMP¿¡¼­´Â »ó´çÇÑ ¾çÀÇ ºÒÇÊ¿äÇÑ ¿À¹öÇìµå(overhead)¸¦ °¡Áö°Ô µÈ´Ù. ÀÌ·± ¿À¹öÇìµåÀÇ ´ëºÎºÐÀº Ä¿³Î Áï ÀÎÅÍ·´Æ® Çڵ鷯¿¡¼­ ÀϾ´Ù. SMP ¸®´ª½º¿¡¼­´Â º¸Åë µ¿½Ã¿¡ ÇϳªÀÇ ÇÁ·Î¼¼¼­¸¸ÀÌ Ä¿³Î ¸ðµå¿¡ ÀÖÀ» ¼ö ÀÖ°í, ºÎÆ® ÇÁ·Î¼¼¼­¸¸ÀÌ ÀÎÅÍ·´Æ®¸¦ ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÀÎÅÍ·´Æ® ÄÁÆ®·Ñ·¯°¡ ¼³Á¤µÇ¾î Àֱ⠶§¹®¿¡ ¹®Á¦´Â ´õ ½É°¢ÇØÁø´Ù. ±×·³¿¡µµ ºÒ±¸ÇÏ°í, ÀüÇüÀûÀÎ SMP Åë½Å Çϵå¿þ¾î°¡ Ŭ·¯½ºÅÍ ³×Æ®¿÷º¸´Ù´Â ÈξÀ ÁÁ±â ¶§¹®¿¡, ¿ø·¡ Ŭ·¯½ºÅÍ¿¡¼­ »ç¿ëÇÏ·Á°í ¸¸µç Ŭ·¯½ºÅÍ¿ë ¼ÒÇÁÆ®¿þ¾îµµ SMP¿¡¼­ ´õ ÁÁÀº ¼º´ÉÀ» º¸ÀδÙ. ÀÌ ÀåÀÇ ³ª¸ÓÁö¿¡¼­´Â SMP Çϵå¿þ¾î¿¡ ´ëÇؼ­ À̾߱âÇÏ°í, º´·Ä ÇÁ·Î±×·¥ ÇÁ·Î¼¼½º »çÀÌ¿¡¼­ ¸Þ¸ð¸®¸¦ °øÀ¯ÇÏ´Â ±âº»ÀûÀÎ ¸®´ª½º ¸ÞÄ¿´ÏÁòÀ» »ìÆ캸°í, ¿øÀÚ¼º(atomicity), Èֹ߼º(volatility), ¶ô(lock), ij½Ã ¶óÀÎ(cache line)¿¡ ´ëÇؼ­ ¾ÆÁÖ °£´ÜÇÏ°Ô ¾Ë¾Æº¸°í, ¸¶Áö¸·À¸·Î ¿©·¯°¡Áö °øÀ¯ ¸Þ¸ð¸® º´·Ä ó¸® ¶óÀ̺귯¸®µé¿¡ ´ëÇØ ¾à°£ÀÇ Á¶¾ðÀ» Çϵµ·Ï ÇÑ´Ù. 2.1. SMP Çϵå¿þ¾î(Hardware) SMP ½Ã½ºÅÛµéÀº ¿©·¯ÇØ ÀüºÎÅÍ »ç¿ëµÇ¾î ¿ÔÁö¸¸, ¾ó¸¶Àü±îÁö¸¸Çصµ ±â°è¸¶´Ù ±âº»ÀûÀÎ ±â´ÉµéÀ» ¼­·Î ´Ù¸£°Ô ±¸ÇöÇÏ´Â °æÇâÀÌ À־, ¿î¿µÃ¼Á¦¿¡¼­ SMP¸¦ Áö¿øÇÏ´Â °ÍÀÌ È£È¯¼ºÀÌ ¾ø¾ú´Ù. ÀÌ·± ¹®Á¦¸¦ Á¾½Ä½ÃŲ °ÍÀº ÀÎÅÚ¿¡¼­ ¹ßÇ¥ÇÑ ´ÙÁßÇÁ·Î¼¼¼­ ±Ô¾à(Multiprocessor Specification, °£´ÜÈ÷ ÁÙ¿©¼­ MPS¶ó°í ÇÑ´Ù)ÀÌ´Ù. MPS 1.4 ±Ô¾àÀº ¿¡¼­ PDF ÆÄÀÏ Çü½ÄÀ¸·Î µÈ ¹®¼­·Î ±¸ÇÒ ¼ö ÀÖÀ¸¸ç, ¿¡¼­ MPS 1.1 ±Ô¾à¿¡ ´ëÇÑ °³¿ä¸¦ º¼ ¼ö ÀÖÁö¸¸, ÀÎÅÚÀÌ ÀÚ½ÅÀÇ WWW »çÀÌÆ®¸¦ Á¾Á¾ °³ÆíÀ» Çϱ⠶§¹®¿¡ ÀÌ ÁÖ¼Ò´Â ¹Ù²î¾úÀ» ¼öµµ ÀÖ´Ù. ¸¹Àº Á¦ÀÛµé Àº 4°³ÀÇ ÇÁ·Î¼¼¼­±îÁö Áö¿øÇÏ´Â MPS ȣȯ ½Ã½ºÅÛµéÀ» ¸¸µé°í ÀÖÁö¸¸, ÀÌ·ÐÀûÀ¸·Î MPS´Â ´õ ¸¹Àº ÇÁ·Î¼¼¼­µéÀ» Áö¿øÇÒ ¼ö ÀÖ´Ù. MPS°¡ ¾Æ´Ï¸é¼­ IA32(ÀÎÅÚ 32ºñÆ® CPU)°¡ ¾Æ´Ñ ½Ã½ºÅÛ Áß¿¡¼­ SMP ¸®´ª½º°¡ Áö¿øÇÏ´Â ½Ã½ºÅÛÀ¸·Î´Â Sun4m ´ÙÁßÇÁ·Î¼¼¼­ SPARC ½Ã½ºÅÛÀÌ À¯ÀÏÇÏ´Ù. SMP ¸®´ª½º´Â ÀÎÅÚ MPS 1.1°ú 1.4 ȣȯ ½Ã½ºÅÛÀ» ´ëºÎºÐ Áö¿øÇϸç, 16°³±îÁöÀÇ 486DX, Pentium, Pentium MMX, Pentium Pro, Pentium II ÇÁ·Î¼¼¼­¸¦ Áö¿øÇÑ´Ù. Áö¿øÇÏÁö ¾Ê´Â IA32 ÇÁ·Î¼¼¼­·Î´Â ÀÎÅÚ 386, 486SX/SLC ÇÁ·Î¼¼¼­¿Í (ºÎµ¿ ¼Ò¼ýÁ¡ ¿¬»ê Çϵå¿þ¾î°¡ ¾øÀ¸¸é SMP ±â°è¿¡ ¸ÂÁö ¾Ê´Â´Ù), AMD¿Í CyrixÀÇ ÇÁ·Î¼¼¼­µéÀÌ´Ù (À̵é ÇÁ·Î¼¼¼­´Â ´Ù¸¥ SMP Áö¿ø ĨµéÀ» ÇÊ¿ä·Î Çϴµ¥, ÀÌ ±ÛÀ» ¾²°í ÀÖÀ» ¶§ ¾ÆÁ÷ À̵é ĨµéÀº ³ª¿ÍÀÖÁö ¾Ê¾Ò´Ù). MPS ȣȯ ½Ã½ºÅÛµéÀÇ ¼º´ÉÀº õÂ÷¸¸º°·Î ´Þ¶óÁú ¼ö ÀÖ´Ù´Â Á¡Àº ²À ÀÌÇØÇÏ°í ³Ñ¾î°¡¾ß ÇÑ´Ù. ÀϹÝÀûÀÎ ¿¹»ó´ë·Î ¼º´ÉÀÇ Â÷À̸¦ ³ªÅ¸³»´Â ¿äÀÎ ÁßÀÇ Çϳª´Â ÇÁ·Î¼¼¼­ ¼ÓµµÀÌ´Ù. ´ëü·Î Á» ´õ ºü¸¥ Ŭ·°ÀÇ ÇÁ·Î¼¼¼­À» »ç¿ëÇÏ¸é ´õ ºü¸¥ ½Ã½ºÅÛÀÌ µÇ¸ç, Pentium Pro ÇÁ·Î¼¼¼­¸¦ »ç¿ëÇÑ ½Ã½ºÅÛÀÌ Pentium ÇÁ·Î¼¼¼­¸¦ ÀÌ¿ëÇÏ´Â ½Ã½ºÅÛº¸´Ù ºü¸¥ °æÇâÀÌ ÀÖ´Ù. ±×·¸Áö¸¸ MPS¿¡¼­´Â °øÀ¯ ¸Þ¸ð¸®(shared memory)¸¦ Çϵå¿þ¾îÀûÀ¸·Î ¾î¶»°Ô ±¸ÇöÇØ¾ß ÇÏ´ÂÁö´Â ¸í½ÃÇÏÁö ¾Ê°í ÀÖ´Ù. ´ÜÁö ¼ÒÇÁÆ®¿þ¾îÀûÀÎ °üÁ¡¿¡¼­ °øÀ¯ ¸Þ¸ð¸®°¡ ¾î¶»°Ô µ¿ÀÛÇØ¾ß ÇÏ´ÂÁö¸¸ ¸í½ÃÇÏ°í ÀÖÀ» »ÓÀÌ´Ù. ±×·¡¼­ ±¸ÇöÇÏ°í ÀÖ´Â °øÀ¯ ¸Þ¸ð¸® ¹æ½ÄÀÌ SMP ¸®´ª½ºÀÇ Æ¯Â¡°ú ƯÁ¤ ÇÁ·Î±×·¥ÀÇ Æ¯Â¡¿¡ ¾î¶»°Ô ¸Â¾Æµé¾î°¡´À³Ä¿¡ µû¶ó¼­ ¼º´ÉÀÌ ´Þ¶óÁú ¼ö ÀÖ´Ù. MPS ȣȯ ½Ã½ºÅÛµéÀÇ Â÷ÀÌ´Â ¿ì¼± ¹°¸®ÀûÀ¸·Î °øÀ¯ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ´Â °ÍÀ» ¾î¶»°Ô ±¸ÇöÇÏ´À³Ä¿¡¼­ ³ªÅ¸³­´Ù. 2.1.1. °¢ ÇÁ·Î¼¼¼­°¡ µ¶ÀÚÀûÀÎ L2 ij½Ã¸¦ °¡Áö´Â°¡?(Does each processor have its own L2 cache?) ÀϺΠMPS Pentium ½Ã½ºÅÛ°ú, ¸ðµç MPS Pentium Pro¿Í Pentium II ½Ã½ºÅÛÀº µ¶ÀÚÀûÀÎ L2 ij½Ã¸¦ °¡Áö°í ÀÖ´Ù. (L2 ij½Ã´Â Pentium Pro³ª Pentium II ¸ðµâ¿¡ µé¾îÀÖ´Ù) ÀϹÝÀûÀ¸·Î µ¶ÀÚÀûÀÎ L2 ij½Ã¸¦ »ç¿ëÇϸé ó¸® ¼Óµµ¸¦ ÃÖ´ëÈ­ÇÒ ¼ö ÀÖ´Ù°í ¾Ë·ÁÁ® ÀÖÁö¸¸, ¸®´ª½º¿¡¼­´Â ¸í¹éÇÏ°Ô ±×·± °ÍÀº ¾Æ´Ï´Ù. À̸¦ È¥¶õÇÏ°Ô ÇÏ´Â ÁÖµÈ ÀÌÀ¯´Â, ÇöÀçÀÇ ¸®´ª½º ½ºÄÉÁÙ·¯°¡ °¢ ÇÁ·Î¼¼½º¸¦ ¶È°°Àº ÇÁ·Î¼¼¼­¿¡¼­ ½ÇÇàµÇ°Ô ÇÏ´Â ÇÁ·Î¼¼¼­ ģȭ·Â(processor infinity)ÀÇ °³³äÀ» µû¸£Áö´Â ¾Ê±â ¶§¹®ÀÌ´Ù. ÇÁ·Î¼¼½º°¡ ½ÇÇàµÇ´Â ÇÁ·Î¼¼¼­´Â ±Ý¹æ ¹Ù²ð¼ö ÀÖ´Ù. ÀÌ ¹®Á¦´Â ÃÖ±Ù¿¡ "ÇÁ·Î¼¼¼­ °áÇÕ(processor binding)"À̶ó´Â Á¦¸ñÀ¸·Î SMP ¸®´ª½º °³¹ß °øµ¿Ã¼¿¡¼­ Åä·ÐµÈ ÀûÀÌ ÀÖ´Ù. ÇÁ·Î¼¼¼­ ģȭ·Â ¾øÀÌ º°µµÀÇ L2 ij½Ã¸¦ °®°ÔµÇ¸é, ¾î¶² ÇÁ·Î¼¼½º°¡ ÀÌÀü¿¡ ½ÇÇàµÇ´ø ÇÁ·Î¼¼¼­°¡ ¾Æ´Ñ ´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­ ½Ã°£À» ÇÒ´ç¹Þ¾Æ ½ÇÇàµÇ´Â °æ¿ì »ó´çÇÑ ¿À¹öÇìµå¸¦ ÃÊ·¡ÇÒ ¼ö ÀÖ´Ù. »ó´ëÀûÀ¸·Î °ªÀÌ ½Ñ »ó´ç¼öÀÇ ½Ã½ºÅÛµéÀº µÎ°³ÀÇ Pentium ÇÁ·Î¼¼¼­°¡ ÇϳªÀÇ L2 ij½Ã¸¦ °øÀ¯Çϵµ·Ï ¸¸µé¾îÁ® ÀÖ´Ù. ÀÌ ¹æ½ÄÀÇ ¾ÈÁÁÀº Á¡Àº µÎ°³ÀÇ ÇÁ·Î¼¼¼­°¡ ¼­·Î ij½Ã¸¦ »çÀÌ¿¡ µÎ°í °æÀïÀ» ÇؾßÇÑ´Ù´Â °ÍÀ¸·Î, ƯÈ÷ ¿©·¯°³ÀÇ ¼­·Î µ¶¸³ÀûÀÎ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â °æ¿ì ¼º´ÉÀÌ ÇöÀúÇÏ°Ô ¶³¾îÁø´Ù´Â °ÍÀÌ´Ù. ÁÁÀº Á¡Àº ¸¹Àº º´·Ä ÇÁ·Î±×·¥µé¿¡°Ô À־ µÎ °³ÀÇ ÇÁ·Î¼¼¼­°¡ °øÀ¯ ¸Þ¸ð¸®ÀÇ ¶È°°Àº ¶óÀο¡ Á¢±ÙÇÏ´Â °æ¿ì Çϳª¸¸ÀÌ À̸¦ ij½Ã¿¡ °¡Á®¿À¸é µÇ¾î, ¹ö½º¸¦ µÑ·¯½Ñ °æÀïÀ» ÇÇÇÒ ¼ö À־ ij½Ã¸¦ °øÀ¯ÇÏ´Â°Ô ½ÇÁúÀûÀ¸·Î µµ¿òÀÌ µÈ´Ù´Â °ÍÀÌ´Ù. ¶ÇÇÑ ÇÁ·Î¼¼¼­ ģȭ·ÂÀ» Àû¿ëÇÏÁö ¾Ê´Â °æ¿ì L2 ij½Ã¸¦ °øÀ¯ÇÏ´Â °ÍÀÌ ÇÇÇØ°¡ ´õ Àû´Ù. µû¶ó¼­ º´·Ä ÇÁ·Î±×·¥ÀÇ °æ¿ì L2 ij½Ã¸¦ °øÀ¯ÇÏ´Â °ÍÀÌ ÀϹÝÀûÀ¸·Î »ý°¢ÇÏ´Â °Í¸¸Å­ ³ª»ÚÁö´Â ¾Ê´Ù. µÎ°³ÀÇ Pentium ÇÁ·Î¼¼¼­°¡ 256K ij½Ã¸¦ °øÀ¯ÇÏ´Â ½Ã½ºÅÛÀ» »ç¿ëÇغ» °æÇè¿¡ µû¸£¸é, ÇÊ¿äÇÑ Ä¿³Î ÀÛ¾÷ÀÇ Á¤µµ¿¡ µû¶ó¼­ ½Ã½ºÅÛÀÇ ¼º´ÉÀÌ »ó´çÈ÷ Å©°Ô ´Þ¶óÁ³´Ù. ÃÖ¾ÇÀÇ °æ¿ì ¼Óµµ°¡ 1.2¹è Á¤µµ¹Û¿¡ »¡¶óÁöÁö ¾Ê¾ÒÁö¸¸, "µ¥ÀÌÅ͸¦ °¡Á®¿À´Â °ÍÀº °øÀ¯ÇÏ´Â(shared fetch)" È¿°ú¸¦ Á¦´ë·Î ÀÌ¿ëÇÏ´Â °è»ê Áß½ÉÀûÀÎ SPMD ½ºÅ¸ÀÏÀÇ Äڵ带 »ç¿ëÇÏ¿´À» ¶§ 2.1 ¹è±îÁö »¡¶óÁö´Â °ÍÀ» º¸±âµµ ÇÏ¿´´Ù. 2.1.2. ¹ö½º ¼³Á¤(Bus configuration)? ¸ÕÀú À̾߱âÇÒ °ÍÀº ¿äÁò¿¡ ³ª¿À´Â ´ëºÎºÐÀÇ ½Ã½ºÅÛµéÀº, ÇÁ·Î¼¼¼­¿¡ Çϳª ÀÌ»óÀÇ PCI ¹ö½º°¡ ¿¬°áµÇ¾î ÀÖ°í, ÀÌ´Â ¶Ç´Ù½Ã ºê¸´Áö(bridge)¸¦ ÅëÇÏ¿© Çϳª ÀÌ»óÀÇ ISA/EISA ¹ö½º¿¡ ¿¬°áµÇ¾î ÀÖ´Ù´Â °ÍÀÌ´Ù. ºê¸´Áö¸¦ ÅëÇÏ´Â °æ¿ì ´ë±â½Ã°£(latency)ÀÌ ´Ã¾î³ª°Ô µÇ°í, EISA³ª ISA´Â ÀϹÝÀûÀ¸·Î PCI¿¡ ºñÇؼ­ ³·Àº ´ë¿ªÆøÀ» Á¦°øÇϱ⠶§¹®¿¡ (ISA°¡ Á¦ÀÏ ³·´Ù), µð½ºÅ© µå¶óÀ̺곪, ºñµð¿À Ä«µå, ´Ù¸¥ °í¼º´É ÀåÄ¡µéÀº PCI ¹ö½º ÀÎÅÍÆäÀ̽º¸¦ ÅëÇÏ¿© ¿¬°áµÇ¾î¾ß ÇÑ´Ù. PCI ¹ö½º°¡ Çϳª¹Û¿¡ ¾ø´õ¶óµµ °è»ê Áß½ÉÀûÀÎ º´·Ä ÇÁ·Î±×·¥ÀÇ °æ¿ì MPS ½Ã½ºÅÛÀº ±¦ÂúÀº ¼º´É°³¼± È¿°ú¸¦ º¸¿©ÁØ´Ù. ÇÏÁö¸¸ I/O 󸮼ӵµ´Â ÇϳªÀÇ ÇÁ·Î¼¼¼­¸¦ »ç¿ëÇÒ ¶§º¸´Ù ´õ ³ª¾ÆÁöÁö ¾ÊÀ¸¸ç, ÇÁ·Î¼¼¼­µéÀÌ ¹ö½º¸¦ »çÀÌ¿¡ µÎ°í °æÀïÀ» Çϱ⠶§¹®¿¡ ¾Æ¸¶µµ ¼º´ÉÀÌ Á¶±Ý ¶³¾îÁö°Ô µÉ °ÍÀÌ´Ù. µû¶ó¼­ I/O ¼Óµµ¸¦ ³ôÀÌ°í ½Í´Ù¸é ¿©·¯°³ÀÇ µ¶ÀÚÀûÀÎ PCI ¹ö½º¿Í I/O ÄÜÆ®·Ñ·¯(¿¹¸¦ µé¾î ¿©·¯°³ÀÇ SCSI üÀεé)¸¦ °¡Áö´Â MPS ½Ã½ºÅÛÀ» ±¸ÀÔÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÀÌ ¶§ SMP ¸®´ª½º¿¡¼­ ÀÌµé ½Ã½ºÅÛÀ» Áö¿øÇÏ´ÂÁö Á¶½É½º·´°Ô »ìÆ캸¾Æ¾ß ÇÑ´Ù. ¶ÇÇÑ ÇöÀçÀÇ SMP ¸®´ª½º¿¡¼­´Â ¾î´À ¼ø°£À̵ç ÇϳªÀÇ ÇÁ·Î¼¼¼­¸¸ÀÌ Ä¿³Î¸ðµå¿¡ ÀÖÀ» ¼ö Àֱ⠶§¹®¿¡, I/O 󸮸¦ ÇÒ ¶§ Ä¿³Î¿¡¼­ ¼Ò¿äÇÏ´Â ½Ã°£ÀÌ ÀûÀº I/O ÄÜÆ®·Ñ·¯¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù´Â Á¡À» ¸í½ÉÇØ¾ß ÇÑ´Ù. Á¤¸» °í¼º´ÉÀ» ¿øÇÑ´Ù¸é ½Ã½ºÅÛ ÄÝ(system call)À» ÅëÇÏÁö ¾Ê°í, »ç¿ëÀÚ ÇÁ·Î¼¼½º°¡ Á÷Á¢ ÀåÄ¡·Î I/O¸¦ ÇÏ´Â °Íµµ °í·ÁÇØ º¼ ÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ´Â »ý°¢¸¸Å­ ¾î·ÆÁöµµ ¾Ê°í, ¾ÈÁ¤¼ºÀ» ÇØÄ¡Áöµµ ¾Ê´Â´Ù (3.3 Àå¿¡¼­ ±âº» ±â¼ú¿¡ ´ëÇؼ­ ¼³¸íÇÏ°í ÀÖ´Ù). ¹ö½º ¼Óµµ¿Í ÇÁ·Î¼¼¼­ Ŭ·° ¼ÓµµÀÇ °ü°è¸¦ »ìÆ캸´Â °Íµµ ¸Å¿ì Áß¿äÇÏ´Ù. Áö³­ ¸îÇص¿¾È ÀÌµé »çÀÌÀÇ °ü°è´Â ºÒ¸íÈ®ÇÏ°Ô ÀÌÇØµÇ¾î ¿Ô´Ù. ´ëºÎºÐÀÇ ½Ã½ºÅÛÀÌ Áö±ÝÀº ¶È°°Àº PCI Ŭ·° ¼Óµµ¸¦ »ç¿ëÇÏ°í ÀÖÁö¸¸, ´õ ºü¸¥ Ŭ·° ¼ÓµµÀÇ ÇÁ·Î¼¼¼­°¡ ´õ ´À¸° ¹ö½º Ŭ·°°ú ½ÖÀ» ÀÌ·ç´Â °ÍÀº µå¹® ÀÏÀÌ ¾Æ´Ï´Ù. ÀÌÀÇ °íÀüÀûÀÎ ¿¹·Î, ÀϹÝÀûÀ¸·Î Pentium 133Àº Pentium 150º¸´Ù ´õ ºü¸¥ ¹ö½º¸¦ »ç¿ëÇÏ¿´°í, ´Ù¾çÇÑ º¥Ä¡¸¶Å©¿¡¼­ ƯÀÌÇÑ °á°ú¸¦ ³ªÅ¸³Â´Ù. ÀÌ·± È¿°ú´Â SMP ½Ã½ºÅÛ¿¡¼­ ´õ¿í ÁõÆøµÈ´Ù. ÀÌ´Â ¹ö½º Ŭ·° ¼Óµµ¸¦ ºü¸£°Ô ÇÏ´Â °Íº¸´Ùµµ ´õ Áß¿äÇÑ ¹®Á¦ÀÌ´Ù. 2.1.3. ¸Þ¸ð¸® Áßø°ú DRAM ±â¼ú(Memory interleaving and DRAM technolo­ gies)? ¸Þ¸ð¸® ÁßøÀº ½ÇÁ¦·Î MPS¿Í´Â ¾Æ¹«·± Àϵµ °°ÀÌ ÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª MPS ½Ã½ºÅÛ¿¡¼­ ÀÌ°ÍÀÌ Á¾Á¾ ¾ð±ÞµÇ´Â °ÍÀ» º¼ ¼ö Àִµ¥, ÀÌ´Â ÀÌµé ½Ã½ºÅÛÀÌ ´ëü·Î ¸Þ¸ð¸® ´ë¿ªÆøÀ» ´õ ¸¹ÀÌ ÇÊ¿ä·Î Çϱ⠶§¹®ÀÌ´Ù. ±âº»ÀûÀ¸·Î 2-way³ª 4-way ÁßøÀº RAM¿¡ ºí·° Á¢±ÙÀ» ÇÒ ¶§, ÀÌ°ÍÀÌ Çϳª°¡ ¾Æ´Ï¶ó ¿©·¯°³ÀÇ RAM ¹ðÅ©(bank)¸¦ »ç¿ëÇÏ¿© ÀÌ·ç¾îÁöµµ·Ï RAMÀ» Á¶Á÷È­ÇÑ´Ù. ÀÌ´Â ´õ ³ôÀº ¸Þ¸ð¸® Á¢±Ù ´ë¿ªÆøÀ» Á¦°øÇÏ°Ô µÇ´Âµ¥, ƯÈ÷ ij½Ã ¶óÀÎ(cache line) Àб⳪ ¾²±â¿¡ À־ ´õ¿í ±×·¯ÇÏ´Ù. ÀÌ°ÍÀÇ È¿°ú¿¡ ´ëÇؼ­´Â ±×´ÙÁö ¸íÄèÇÏÁö ¾ÊÀºµ¥, EDO DRAMÀ̳ª ¿©·¯°¡Áö ´Ù¸¥ ¸Þ¸ð¸® ±â¼úµéÀº ÀÌ¿Í ºñ½ÁÇÑ Á¾·ùÀÇ ¿¬»ê ¼Óµµ¸¦ Çâ»ó½ÃÅ°±â ¶§¹®ÀÌ´Ù. ¿¡¼­ DRAM ±â¼ú¿¡ ´ëÇØ ¹«Ã´ Àß Á¤¸®µÇ¾îÀÖ´Â °³¿ä¸¦ º¼ ¼ö ÀÖ´Ù. ±×·¸´Ù¸é, ¿¹¸¦ µé¾î 2-wayÀÇ ÁßøµÇ´Â EDO DRAMÀ» ¾²´Â °ÍÀÌ ÁßøÀ» »ç¿ëÇÏÁö ¾Ê´Â SDRAMÀ» ¾²´Â °Íº¸´Ù ´õ ÁÁÀº°¡? ÀÌ°ÍÀº ¸Å¿ì ÈǸ¢ÇÑ Áú¹®À̸ç, ±× ´ë´äÀº °£´ÜÇÏÁö ¾Ê´Ù. ¿Ö³ÄÇϸé Áßø±â¼úÀ̳ª ´Ù¸¥ Èï¹ÌÀÖ´Â ±â¼úµéÀº ´ëü·Î ºñ½Î±â ¶§¹®ÀÌ´Ù. ¿©±â¿¡ µé¾î°¡´Â ¶È°°Àº µ·À» º¸Åë ¸Þ¸ð¸®¿¡ ÅõÀÚÇÑ´Ù¸é ÈξÀ ¸¹Àº ¾çÀÇ ¸ÞÀÎ ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. °¡Àå ´À¸° DRAMÀ» »ç¿ëÇÑ´Ù ÇÏ´õ¶óµµ µð½ºÅ©¸¦ ÀÌ¿ëÇÑ °¡»ó ¸Þ¸ð¸®º¸´Ù´Â ÈξÀ ºü¸£´Ù. 2.2. °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼Ò°³ SMP¿¡¼­ º´·Ä󸮸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÃæºÐÈ÷ ÇÒ¸¸ÇÑ °ÍÀ̶ó°í °áÁ¤À» ³»·È´Ù¸é, ÀÌÁ¦ ¾îµð¼­ºÎÅÍ ½ÃÀÛÇÏ´Â°Ô ÁÁÀ»±î? ±×·³, °øÀ¯ ¸Þ¸ð¸® Åë½ÅÀÌ ½ÇÁ¦·Î µ¿ÀÛÇÏ´Â ¹æ½Ä¿¡ ´ëÇؼ­ Á¶±Ý ´õ ¹è¿ì´Â °ÍÀ¸·Î ±× ù¹ßÀ» ³»µó¾îº¸µµ·Ï ÇÏÀÚ. ¾óÇÍ »ý°¢ÇÏ¸é °øÀ¯ ¸Þ¸ð¸® Åë½ÅÀ̶õ ÇϳªÀÇ ÇÁ·Î¼¼¼­°¡ ¸Þ¸ð¸®¿¡ °ªÀ» ÀúÀåÇϸé, ´Ù¸¥ ÇÁ·Î¼¼¼­°¡ À̸¦ ÀоîµéÀÌ´Â °ÍÀ̶ó°í »ý°¢ÇÒ ¼öµµ ÀÖ´Ù. ÇÏÁö¸¸ ºÒÇàÈ÷µµ ±×·¸°Ô °£´ÜÇÏÁö¸¸Àº ¾Ê´Ù. ¿¹¸¦ µé¾î, ÇÁ·Î¼¼½º¿Í ÇÁ·Î¼¼¼­ »çÀÌÀÇ °ü°è°¡ ¹«Ã´ º¹ÀâÇÏ°Ô ¾ôÇô µÇ¾îÀÖ´Ù°í ÇÏÀÚ. ÇÁ·Î¼¼¼­ÀÇ °¹¼öº¸´Ù ÇöÀç µ¿ÀÛÇÏ´Â ÇÁ·Î¼¼½ºÀÇ ¼ö°¡ Àû´Ù°í ÇÏ´õ¶óµµ ±×·¸°í, ±× ¹Ý´ëÀÇ °æ¿ìµµ ¸¶Âù°¡Áö´Ù. ÀÌ ÀåÀÇ ³²Àº ºÎºÐ¿¡¼­´Â Ưº°È÷ ½Å°æ¾²Áö ¾ÊÀ¸¸é ½É°¢ÇÑ ¹®Á¦¸¦ ¾ß±âÇÒ ¼ö ÀÖ´Â Áß¿äÇÑ ³íÁ¡µé - ¹«¾ùÀ» °øÀ¯ÇÒ °ÍÀÎÁö ÆÇ´ÜÇϴµ¥ »ç¿ëÇÏ´Â µÎ°¡Áö ¼­·Î ´Ù¸¥ ¸ðµ¨°ú, ¿øÀÚ¼º(atomicity) ³íÁ¡, Èֹ߼º(volatility) °³³ä°ú Çϵå¿þ¾î ¶ô(lock) ¸í·É, ij½Ã ¶óÀÎ(cache line) È¿°ú, ±×¸®°í ¸®´ª½º ½ºÄÉÁÙ·¯ ³íÁ¡ - À» °£´ÜÈ÷ ¿ä¾àÇϵµ·Ï ÇÏ°Ú´Ù. 2.2.1. ¸ðµÎ °øÀ¯Çϱ⠴ë ÀϺθ¦ °øÀ¯Çϱâ(Shared Everything Vs. Shared Something) °øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö¿¡¼­´Â ÀϹÝÀûÀ¸·Î ¸ðµÎ °øÀ¯Çϱâ¿Í ÀϺθ¦ °øÀ¯Çϱâ¶ó´Â µÎ°¡ÁöÀÇ ±Ùº»ÀûÀ¸·Î ¼­·Î ´Ù¸¥ ¸ðµ¨À» »ç¿ëÇÑ´Ù . ÀÌ µÎ°¡Áö ¸ðµ¨Àº ¸ðµÎ ÇÁ·Î¼¼¼­µéÀÌ °øÀ¯¸Þ¸ð¸®·Î µ¥ÀÌÅ͸¦ ¾²°í, °øÀ¯¸Þ¸ð¸®¿¡¼­ µ¥ÀÌÅ͸¦ ÀоîµéÀÓÀ¸·Î½á Åë½ÅÀ» ÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. µÎ ¸ðµ¨ÀÇ ´Ù¸¥Á¡Àº, ¸ðµÎ °øÀ¯ÇÏ´Â ¸ðµ¨¿¡¼­´Â ¸ðµç ÀڷᱸÁ¶¸¦ °øÀ¯¸Þ¸ð¸®¿¡ µÎ´Â ¹Ý¸é¿¡, ÀϺθ¦ °øÀ¯ÇÏ´Â ¸ðµ¨¿¡¼­´Â »ç¿ëÀÚ°¡ °øÀ¯ÇÒ ÀڷᱸÁ¶¿Í ÇϳªÀÇ ÇÁ·Î¼¼¼­¿¡ ±¹ÇѵǴ ÀڷᱸÁ¶¸¦ ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÑ´Ù´Â °ÍÀÌ´Ù. ¾î¶² °øÀ¯¸Þ¸ð¸® ¸ðµ¨À» »ç¿ëÇÒ °ÍÀΰ¡? ÀÌ´Â Á¾±³¿¡ ´ëÇÑ Áú¹®°ú ºñ½ÁÇÏ´Ù. ¸¹Àº »ç¶÷µéÀº ÀڷᱸÁ¶¸¦ ¼±¾ðÇÒ ¶§ ÀÌ°ÍÀ» °øÀ¯ÇÒ °ÍÀÎÁö µû·Î ±¸º°ÇÒ ÇÊ¿ä°¡ ¾ø±â ¶§¹®¿¡, ¸ðµÎ °øÀ¯ÇÏ´Â ¸ðµ¨À» ÁÁ¾ÆÇÑ´Ù. ÀÌ ¶§´Â µ¿½Ã¿¡ ÇϳªÀÇ ÇÁ·Î¼¼½º(ÇÁ·Î¼¼¼­)¸¸ÀÌ ÀÚ·á¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï, Ãæµ¹À» ÀÏÀ¸Å³ ¼ö ÀÖ´Â °øÀ¯ÇÏ´Â ÀÚ·á¿¡ Á¢±ÙÇÏ´Â ÄÚµå ÁÖÀ§¿¡ ¶ô(lock)À» °É±â¸¸ ÇÏ¸é µÈ´Ù. ±×·¸Áö¸¸ ÀÌ°Í ¿ª½Ã ¸»Ã³·³ °£´ÜÇÏÁø ¾Ê´Ù. ±×·¡¼­ ¸¹Àº »ç¶÷µéÀº ÀϺθ¸À» °øÀ¯ÇÏ´Â ¸ðµ¨ÀÌ °¡Á®´ÙÁÖ´Â »ó´ëÀûÀÎ ¾ÈÀü¼ºÀ» ´õ ¼±È£Çϱ⵵ ÇÑ´Ù. 2.2.1.1. ¸ðµÎ °øÀ¯Çϱâ(Shared Everything) ¸ðµÎ °øÀ¯ÇÏ´Â ¹æ½ÄÀÇ ÀåÁ¡Àº ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â ¼øÂ÷ÀûÀÎ ÇÁ·Î±×·¥À» ¼±ÅÃÇÏ¿© ½±°Ô ¸ðµÎ °øÀ¯ÇÏ´Â º´·Ä ÇÁ·Î±×·¥À¸·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¿©±â¼­´Â ¾î¶² ÀÚ·á°¡ ´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­ Á¢±ÙÇÒ ¼ö ÀÖ´Â °ÍÀÎÁö ¸ÕÀú ÆÇ´ÜÇØ¾ß ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. °£´ÜÇÏ°Ô »ìÆ캸¸é, ¸ðµç°É °øÀ¯ÇÏ´Â ¹æ½ÄÀÇ °¡Àå Å« ¹®Á¦Á¡Àº ÇϳªÀÇ ÇÁ·Î¼¼¼­°¡ ÃëÇÑ ÇൿÀÌ ´Ù¸¥ ÇÁ·Î¼¼¼­µé¿¡°Ô ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÌ ¹®Á¦´Â µÎ°¡Áö ¹æÇâÀ¸·Î ³ªÅ¸³­´Ù : o ¸¹Àº ¶óÀ̺귯¸®µéÀº °øÀ¯ÇÒ ¼ö ¾ø´Â ÀڷᱸÁ¶µéÀ» »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î, UNIX¿¡¼­ ´ëºÎºÐÀÇ ÇÔ¼öµéÀº errno¶ó´Â º¯¼ö¿¡´Ù°¡ ¿¡·¯Äڵ带 ´ã¾Æ µ¹·ÁÁØ´Ù. ¸¸¾à ¸ðµÎ °øÀ¯ÇÏ´Â µÎ °³ÀÇ ÇÁ·Î¼¼½º°¡ ¿©·¯°¡Áö ÇÔ¼ö¸¦ ºÎ¸¥´Ù¸é, À̵éÀº ¶È°°Àº errno º¯¼ö¸¦ °øÀ¯Çϱ⠶§¹®¿¡ ¼­·Î °£¼·À» ÀÏÀ¸Å°°Ô µÉ °ÍÀÌ´Ù. ºñ·Ï Áö±ÝÀº errno ¹®Á¦¸¦ ÇØ°áÇÑ ¶óÀ̺귯¸®°¡ ÀÖ±ä ÇÏÁö¸¸, ÀÌ¿Í ºñ½ÁÇÑ ¹®Á¦´Â ´ëºÎºÐÀÇ ¶óÀ̺귯¸®¿¡ ¿©ÀüÈ÷ ³²¾Æ ÀÖ´Ù. ¿¹¸¦ µé¾î, ¹Ì¸® Ưº°ÇÑ ÁÖÀǸ¦ ±â¿ïÀÌÁö ¾Ê°í, ¸ðµÎ °øÀ¯ÇÏ´Â ¿©·¯°³ÀÇ ÇÁ·Î¼¼½ºµéÀÌ X ¶óÀ̺귯¸®ÀÇ ÇÔ¼öµéÀ» È£ÃâÇÑ´Ù¸é, X ¶óÀ̺귯¸®´Â Á¦´ë·Î µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. o ÀϹÝÀûÀ¸·Î Æ÷ÀÎÅ͸¦ À߸ø »ç¿ëÇϰųª, ¹è¿­¿¡¼­ À妽º¸¦ À߸ø ÁöÁ¤ÇÑ °æ¿ì, ÃÖ¾ÇÀÇ °á°ú·Î ÀÌ Äڵ带 ¼öÇàÇÏ´ø ÇÁ·Î¼¼½º°¡ Áױ⵵ ÇÑ´Ù. À̶§ core ÆÄÀÏÀ» ¸¸µé¾î ¹«½¼ ÀÏÀÌ ÀϾ´ÂÁö ´Ü¼­¸¦ Á¦°øÇØÁֱ⵵ ÇÑ´Ù. ¸ðµÎ °øÀ¯ÇÏ´Â º´·Ä󸮿¡¼­´Â ÀÌ·± À߸øµÈ Á¢±ÙÀÌ ¹ß»ýÇÏ¸é ´Ù¸¥ ÇÁ·Î¼¼½º±îÁöµµ Á×°Ô ÇÒ °¡´É¼ºÀÌ Ä¿¼­, Áö¿ªÈ­(localize)¸¦ Çϰųª ¿¡·¯¸¦ °íÄ¡´Â °ÍÀ» °ÅÀÇ ºÒ°¡´ÉÇÏ°Ô ¸¸µç´Ù. ÀÌ·± Á¾·ùÀÇ ¹®Á¦´Â ÀϺθ¦ °øÀ¯ÇÏ´Â ¹æ½Ä¿¡¼­´Â ÈçÈ÷ ÀϾÁø ¾Ê´Â´Ù. ¿Ö³ÄÇÏ¸é ¸í¹éÇÏ°Ô ÁöÁ¤ÇÑ ÀڷᱸÁ¶¸¸ÀÌ °øÀ¯µÇ±â ¶§¹®ÀÌ´Ù. ±×¸®°í, ¸ðµÎ °øÀ¯ÇÏ´Â ¹æ½ÄÀº ¸ðµç ÇÁ·Î¼¼¼­°¡ ¿ÏÀüÈ÷ ¶È°°Àº ¸Þ¸ð¸® À̹ÌÁö¸¦ ½ÇÇàÇÏ´Â °æ¿ì¿¡¸¸ µ¿ÀÛÇÑ´Ù´Â °ÍÀº ´ç¿¬ÇÑ ÀÏÀÌ´Ù. Áï, ¿©·¯°³ÀÇ ¼­·Î ´Ù¸¥ ÄÚµå À̹ÌÁöµé »çÀÌ¿¡¼­´Â ¸ðµÎ °øÀ¯ÇÏ´Â ¹æ½ÄÀ» »ç¿ëÇÒ ¼ö ¾ø´Ù (´Ù¸£°Ô ¸»Çϸé, SPMD¸¸À» »ç¿ëÇÒ ¼ö ÀÖÁö, ÀϹÝÀûÀÎ MIMD´Â »ç¿ëÇÒ ¼ö ¾ø´Ù). ¸ðµÎ °øÀ¯ÇÏ´Â ¹æ½ÄÀ» Áö¿øÇÏ´Â °¡Àå ÀϹÝÀûÀÎ À¯ÇüÀº ¾²·¹µå ¶óÀ̺귯¸®(threads library)ÀÌ´Ù. ¾²·¹µå ´Â º»·¡, ´ëü·Î ÀϹÝÀûÀÎ UNIX ÇÁ·Î¼¼½º¿Í´Â ´Ù¸£°Ô ½ºÄÉÁÙÀÌ ÀÌ·ç¾îÁö°í, °¡Àå Áß¿äÇÑ Á¡À¸·Î µ¿ÀÏÇÑ ¸Þ¸ð¸® ¸Ê¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â "°¡º­¿î" ÇÁ·Î¼¼½ºÀÌ´Ù. POSIX Pthreads ÆÐÅ°Áö´Â ¿©·¯ Æ÷Æà ÇÁ·ÎÁ§Æ®¿¡¼­ ÃÐÁ¡À» ¹Þ¾Æ ¿Ô¾ú´Ù. ¿©±â¼­ Áß¿äÇÑ Áú¹®Àº, À̵é Æ÷ÆÃÁßÀÇ ¾î¶² °ÍµéÀÌ ½ÇÁ¦·Î ÇÁ·Î±×·¥¿¡ ÀÖ´Â ¾²·¹µåµéÀ» SMP ¸®´ª½º¿¡¼­ º´·Ä·Î ½ÇÇàÇÒ ¼ö ÀÖ´À³ÄÀÌ´Ù (ÀÌ»óÀûÀ¸·Î, °¢ ¾²·¹µå¸¶´Ù ÇϳªÀÇ ÇÁ·Î¼¼¼­¸¦). POSIX API´Â À̸¦ ¿ä±¸ÇÏÁö ¾ÊÀ¸¸ç, °°Àº ¹öÀü¿¡¼­´Â ºÐ¸íÇÏ°Ô º´·Ä ¾²·¹½º ½ÇÇàÀ» ±¸ÇöÇÏÁö ¾Ê°í ÀÖ´Ù - ÇÁ·Î±×·¥ÀÇ ¸ðµç ¾²·¹µåµéÀº ÇϳªÀÇ ¸®´ª½º ÇÁ·Î¼¼½º ¾È¿¡ µé¾îÀÖ´Ù. SMP ¸®´ª½º¿¡¼­ÀÇ º´·Ä󸮸¦ Áö¿øÇÑ Ã¹¹ø° ¾²·¹µå ¶óÀ̺귯¸®´Â Áö±ÝÀº Çѹ°°£ bb_threads ¶óÀ̺귯¸®·Î, ¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ¸®´ª½ºÀÇ clone()ÇÔ¼ö¸¦ »ç¿ëÇÏ¿©, µ¶ÀÚÀûÀ¸·Î ½ºÄÉÁٵǸç, ÇϳªÀÇ ÁÖ¼Ò°ø°£À» °øÀ¯ÇÏ´Â, »õ·Î¿î ¸®´ª½º ÇÁ·Î¼¼½º¸¦ »ý¼º(fork)ÇÏ´Â ¸Å¿ì ÀÛÀº ¶óÀ̺귯ÀÌ´Ù. SMP ¸®´ª½º ±â°è´Â °¢ "¾²·¹µåµé"ÀÌ ¿ÏÀüÇÑ ¸®´ª½º ÇÁ·Î¼¼½ºÀ̱⠶§¹®¿¡ ¿©·¯°³ÀÇ À̵é "¾²·¹µåµé"À» º´·Ä·Î ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ´ë½Å ÀÌÀÇ ´ñ°¡·Î ´Ù¸¥ ¿î¿µÃ¼Á¦ÀÇ ÀϺΠ¾²·¹µå ¶óÀ̺귯¸®µéÀÌ Á¦°øÇÏ´Â °Í°ú °°Àº "°¡º­¿î" ½ºÄÉÁÙ¸µ Á¦¾î¸¦ ÇÒ ¼ö ¾ø´Ù. ÀÌ ¶óÀ̺귯¸®´Â »õ·Î¿î ¸Þ¸ð¸® Á¶°¢À» °¢ ¾²·¹µåÀÇ ½ºÅÃÀ¸·Î ÇÒ´çÇÏ°í, ¶ô(lock)ÀÇ ¹è¿­(mutex °³Ã¼µé)µéÀ» ¿øÀÚÀûÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖ´Â ÇÔ¼ö¸¦, C·Î Æ÷ÀåµÈ ¾î¼Àºí¸® Äڵ带 Á¶±Ý »ç¿ëÇÏ¿© Á¦°øÇÏ°í ÀÖ´Ù. ¹®¼­´Â README¿Í °£´ÜÇÑ ¿¹Á¦ ÇÁ·Î±×·¥À¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. Á»´õ ÃÖ±Ù¿¡ clone()À» »ç¿ëÇÏ´Â POSIX ¾²·¹µå ¹öÀüÀÌ °³¹ßµÇ¾ú´Ù. ÀÌ ¶óÀ̺귯¸®´Â LinuxThreads ·Î, SMP ¸®´ª½º¿¡¼­ »ç¶÷µéÀÌ °¡Àå ¼±È£ÇÏ´Â ¸ðµÎ °øÀ¯ÇÏ´Â ¶óÀ̺귯¸®ÀÌ´Ù. POSIX ¾²·¹µåµéµµ ¹®¼­È­°¡ ÀߵǾîÀÖ°í, LinuxThreads README ¿Í LinuxThreads FAQ ¿ª½Ã ¸Å¿ì ÀߵǾî ÀÖ´Ù. Áö±ÝÀÇ ÁÖ¿äÇÑ ¹®Á¦´Â POSIX ¾²·¹µå¸¦ Á¦´ë·Î ÇÏ·Á¸é À̸¦ ÀÚ¼¼ÇÏ°Ô ¾Ë¾Æ¾ßÇÑ´Ù´Â °ÍÀÌ°í, LinuxThreads´Â ¾ÆÁ÷Àº °è¼ÓÇؼ­ ÀÛ¾÷ÁßÀ̶ó´Â °ÍÀÌ´Ù. ¶ÇÇÑ POSIX ¾²·¹µå Ç¥ÁØÀÌ Ç¥ÁØÈ­ °úÁ¤¿¡¼­ °è¼Ó ¹ßÀüµÇ°í ÀÖ¾î, ÀÌ¹Ì ¹Ù²ï ¿¹Àü ¹öÀüÀÇ Ç¥ÁØ¿¡ ¸ÂÃç ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏÁö ¾Êµµ·Ï ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇÑ´Ù´Â °Í ¿ª½Ã ¹®Á¦ÀÌ´Ù. 2.2.1.2. ÀϺθ¦ °øÀ¯Çϱâ(Shared Something) ÀϺθ¦ °øÀ¯ÇÏ´Â °ÍÀº Á¤¸»·Î "°øÀ¯ÇÒ ÇÊ¿ä°¡ ÀÖ´Â °Í¸¸À» °øÀ¯ÇÏ´Â" °ÍÀÌ´Ù. ÀÌ Á¢±Ù¹ýÀº °¢ ÇÁ·Î¼¼¼­ÀÇ ¸Þ¸ð¸® ¸ÊÀÇ ¶È°°Àº À§Ä¡¿¡ °øÀ¯µ¥ÀÌÅÍ°¡ ÇÒ´çµÇ°Ô ÇÏ´Â °Í¿¡ À¯ÀÇÇÑ´Ù¸é ÀϹÝÀûÀÎ MIMD(SPMD°¡ ¾Æ´Ï¶ó) ¿ëÀ¸·Î µ¿ÀÛÇÏ°Ô µÈ´Ù. ´õ Áß¿äÇÑ Æ¯Â¡Àº, ÀϺθ¦ °øÀ¯ÇÏ´Â ¹æ½ÄÀº ¼º´ÉÀ» ¿¹ÃøÇÏ°í Á¶À²Çϸç, Äڵ带 µð¹ö±ëÇÏ´Â °Í µîÀ» ½±°Ô ¸¸µé¾îÁشٴ °ÍÀÌ´Ù. À¯ÀÏÇÑ ¹®Á¦·Î´Â : o »çÀü¿¡ ¹«¾ùÀÌ Á¤¸»·Î °øÀ¯ÇÒ ÇÊ¿ä°¡ ÀÖ´ÂÁö ¾Æ´Â°Ô Èûµé´Ù. o °øÀ¯ ¸Þ¸ð¸®¿¡ °´Ã¼¸¦ ½ÇÁ¦·Î ÇÒ´çÇÏ´Â °ÍÀº °ñÄ¡¾ÆÇ ÀÛ¾÷ÀÌ´Ù. ƯÈ÷ ½ºÅÿ¡ ÇÒ´çµÇ´ø °´Ã¼ÀÎ °æ¿ì ´õ¿í ±×·¸´Ù. ¿¹¸¦ µé¾î, °øÀ¯ µ¥ÀÌÅ͸¦ º°µµÀÇ ¸Þ¸ð¸® ¿µ¿ª¿¡ ÇÒ´çÀ» ÇؾßÇÒ ÇÊ¿ä°¡ ÀÖ´Â °æ¿ì°¡ Àִµ¥, ÀÌ ¶§´Â º°µµÀÇ ¸Þ¸ð¸® ÇÒ´ç ÇÔ¼ö¸¦ »ç¿ëÇÏ°í, °¢ ÇÁ·Î¼¼½º°¡ À̸¦ ÂüÁ¶ÇÒ ¶§ ¶Ç´Ù¸¥ Æ÷ÀÎÅ͸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ÇöÀç ¸®´ª½º ÇÁ·Î¼¼½º ±×·ìµéÀÌ µ¶ÀÚÀûÀÎ ¸Þ¸ð¸® °ø°£À» °¡Áö¸é¼­, »ó´ëÀûÀ¸·Î ÀÛÀº ¸Þ¸ð¸® ¿µ¿ª¸¸À» ÇÔ²² °øÀ¯ÇÏ°Ô Çϴµ¥¿¡´Â µÎ°³ÀÇ À¯»çÇÑ ¹æ½ÄÀ» »ç¿ëÇÑ´Ù. ¸®´ª½º ½Ã½ºÅÛÀ» ¼³Á¤ÇÒ ¶§ ¹Ùº¸°°ÀÌ "System V IPC"¸¦ »©¹ö¸®Áö ¾Ê¾Ò´Ù¸é, ¸®´ª½º´Â "System V °øÀ¯ ¸Þ¸ð¸®"¶ó´Â ´Ù¸¥ ½Ã½ºÅÛ »çÀÌ¿¡¼­µµ ȣȯ¼ºÀÌ ÀÖ´Â ¹æ½ÄÀ» Á¦°øÇÑ´Ù. ´Ù¸¥ ¹æ½ÄÀº mmap() ½Ã½ºÅÛ ÄÝÀ» ÅëÇÏ¿© ¸Þ¸ð¸® ¸ÅÇÎ(memory mapping) ±â´ÉÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ´Â ±¸Çö¹æ½ÄÀÌ UNIX ½Ã½ºÅÛ¸¶´Ù Å©°Ô Â÷ÀÌ°¡ ³­´Ù. À̵é È£Ãâ¿¡ ´ëÇؼ­´Â ¸Å´º¾ó ÆäÀÌÁöµé¿¡¼­ ¹è¿ï ¼ö ÀÖ´Ù. ±×¸®°í 2.5Àå°ú 2.6Àå¿¡ ³ª¿À´Â °³°ýÀº À̸¦ óÀ½ ½ÃÀÛÇÒ ¶§ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. 2.2.2. ¿øÀÚ¼º°ú ¼ø¼­(Atomicity And Ordering) À§ÀÇ µÎ°¡Áö ¸ðµ¨ Áß ¾î¶² °ÍÀ» »ç¿ëÇÏ´õ¶óµµ °á°ú´Â ¸Å¿ì ºñ½ÁÇÏ´Ù. ¿©·¯ºÐÀº ÀÚ½ÅÀÌ ¸¸µç º´·Ä ÇÁ·Î±×·¥¿¡ µé¾î ÀÖ´Â ¸ðµç ÇÁ·Î¼¼½ºµéÀÌ Á¢±ÙÇÏ¿© ÀÐ°í ¾µ¼ö ÀÖ´Â ¸Þ¸ð¸® Á¶°¢¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¾ò°Ô µÈ´Ù. ÀÌ ¸»Àº ³»°¡ ¸¸µç º´·Ä ÇÁ·Î±×·¥ÀÌ °øÀ¯ ¸Þ¸ð¸® °´Ã¼µéÀ» ¸¶Ä¡ º¸ÅëÀÇ Áö¿ª ¸Þ¸ð¸®¿¡ ÀÖ´Â °Íó·³ Á¢±ÙÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÏÁö´Â ¾Ê´Â´Ù. ¿øÀÚ¼ºÀ̶õ ÇÑ °´Ã¼¿¡ ´ëÇÑ ÀÛ¾÷ÀÌ ÂÉ°³ÁöÁö ¾Ê°í, Áß´ÜµÉ ¼ö ¾ø´Â ÀÏ·ÃÀÇ °úÁ¤À¸·Î ÀÌ·ç¾îÁö´Â °ÍÀ» °¡¸®Å°´Â °³³äÀÌ´Ù. ºÒÇàÈ÷µµ, °øÀ¯ ¸Þ¸ð¸®¿¡ ´ëÇÑ Á¢±ÙÀº °øÀ¯ ¸Þ¸ð¸®¿¡ ÀÖ´Â ÀÚ·á¿¡ ´ëÇÑ ¸ðµç ÀÛ¾÷ÀÌ ¿øÀÚÀûÀ¸·Î ÀÌ·ç¾îÁø´Ù´Â °ÍÀ» ³»Æ÷ÇÏÁø ¾Ê´Â´Ù. ¹Ì¸® Ưº°ÇÑ ÁÖÀǸ¦ ±â¿ïÁöÁö ¾Ê´Â´Ù¸é, ¹ö½º(bus)¿¡¼­ ´Ü Çѹø¸¸¿¡ 󸮰¡ ÀÌ·ç¾îÁö´Â °£´ÜÇÑ Àбâ/¾²±â ¿¬»ê¸¸ÀÌ (Áï, Á¤·ÄÀÌ µÈ 8, 16, 32 ºñÆ® ¿¬»êÀÌÁö, Á¤·ÄÀÌ ¾ÈµÇ¾î Àְųª 64 ºñÆ® ¿¬»êÀº ¾Æ´Ï´Ù) ¿øÀÚ¼ºÀ» °¡Áø´Ù. ´õ¿í ³ª»Û °ÍÀº, GCC°°ÀÌ "¶È¶ÈÇÑ" ÄÄÆÄÀÏ·¯´Â ÃÖÀûÈ­¸¦ ÅëÇØ ¸Þ¸ð¸® ÀÛ¾÷À» Á¦°ÅÇÏ¿©, ÇÑ ÇÁ·Î¼¼¼­°¡ ÇÑ ÀÏÀ» ´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­ º¼ ¼ö ¾ø°Ô ¸¸µé¾î¹ö¸®±âµµ ÇÑ´Ù. ´ÙÇàÈ÷µµ, ÀÌµé ¹®Á¦µéÀº ¸ðµÎ °íÄ¥ ¼ö ÀÖ´Ù... Á¢±Ù È¿À²¼º(access efficiency)°ú ij½Ã¶óÀÎ Å©±â(cache line size) »çÀÌÀÇ °ü°è¸¸ °ÆÁ¤°Å¸®·Î ³²°ÜµÎ°í¼­ ¸»ÀÌ´Ù. ±×·¸Áö¸¸ ÀÌµé ³íÁ¡¿¡ ´ëÇؼ­ Åä·ÐÇϱâ Àü¿¡, À̵éÀº ¸ðµÎ °¢ ÇÁ·Î¼¼¼­¿¡¼­ÀÇ ¸Þ¸ð¸® ÂüÁ¶°¡ ÄÚµùÇÑ ¼ø¼­´ë·Î ÀÌ·ç¾îÁö°í ÀÖ´Ù°í °¡Á¤ÇÏ°í ÀÖ´Ù´Â °ÍÀ» ÁöÀûÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. PentiumÀº ±×·¸°Ô ÇÏ°í ÀÖÁö¸¸, ¾ÕÀ¸·Î ³ª¿Ã ÀÎÅÚÀÇ ÇÁ·Î¼¼¼­µéÀº ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖ´Ù´Â °Íµµ ±â¾ïÇϱ⠹ٶõ´Ù. µû¶ó¼­, ¾ÕÀ¸·Î ³ª¿Ã ÇÁ·Î¼¼¼­¿¡ ´ëºñÇÏ¿©, °øÀ¯ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ´Â ÄÚµå ÁÖÀ§¸¦, ¸ðµç ¹Ì°áµÈ ¸Þ¸ð¸® Á¢±ÙÀ» ¿Ï·áÇÏ¿© ¸Þ¸ð¸® Á¢±ÙÀÌ Â÷·Ê´ë·Î ÀÌ·ç¾îÁöµµ·Ï ÇÏ´Â ¸í·É¾î·Î µÑ·¯½Î¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù´Â °ÍÀ» ±íÀÌ »õ±â±æ ¹Ù¶õ´Ù. CPUID ¸í·É¾î´Â ÀÌ·± ºÎ¼öÈ¿°ú(side- effect)¸¦ À§ÇØ ¿¹¾àµÇ¾î ÀÖ´Â °ÍÀÌ´Ù. 2.2.3. Èֹ߼º(Volatility) GCC ¿ÉƼ¸¶ÀÌÀú(optimizer)°¡ °øÀ¯ ¸Þ¸ð¸® °´Ã¼ÀÇ °ªÀ» ·¹Áö½ºÅÍ¿¡ ¹öÆÛ¸µÇÏ´Â °ÍÀ» ¸·À¸·Á¸é, °øÀ¯ ¸Þ¸ð¸®¿¡ ÀÖ´Â ¸ðµç °´Ã¼µéÀ» volatile ¼Ó¼ºÀ» °¡Áöµµ·Ï ¼±¾ðÇØ¾ß ÇÑ´Ù. ÀÌ·¸°Ô Çϸé, ÇѹøÀÇ Á¢±Ù¸¸À¸·Î ÀÌ·ç¾îÁö´Â ¸ðµç °øÀ¯ °´Ã¼ÀÇ Àбâ/¾²±â´Â ¿øÀÚÀûÀ¸·Î ÀϾ°Ô µÈ´Ù. ¿¹¸¦ µé¾î, p°¡ Á¤¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ°í, ÀÌ°ÍÀÌ °¡¸®Å°°í ÀÖ´Â Á¤¼ö°¡ °øÀ¯ ¸Þ¸ð¸®¿¡ ÀÖ´Ù°í ÇÏÀÚ. ANSI C¿¡¼­´Â À̸¦ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ______________________________________________________________________ volatile int * volatile p; ______________________________________________________________________ ÀÌ Äڵ忡¼­, ù¹ø° volatile´Â p°¡ °¡¸®Å°´Â int °ªÀ» ¸»Çϸç, µÎ¹ø° volatile´Â Æ÷ÀÎÅÍ ±× ÀÚü¸¦ ¸»ÇÑ´Ù. ¹°·Ð ÀÌ´Â ±ÍÂúÀº ÀÛ¾÷ÀÌÁö¸¸, GCC°¡ ¸Å¿ì °­·ÂÇÑ ÃÖÀûÈ­¸¦ ¼öÇàÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­ Ä¡·¯¾ß ÇÏ´Â °ÍÀÌ´Ù. Àû¾îµµ ÀÌ·ÐÀûÀ¸·Î´Â, GCC¿¡ -traditional ¿É¼ÇÀ» ÁÖ´Â °ÍÀ¸·Îµµ, ¸î°¡Áö ÃÖÀûÈ­¸¦ Èñ»ýÇÏ´Â ´ë½Å ¿Ã¹Ù¸¥ Äڵ带 ¸¸µé¾î³»´Âµ¥¿¡´Â ÃæºÐÇÏ´Ù. ¿Ö³ÄÇϸé ANSI K&R C ÀÌÀü¿¡´Â ¸ðµç º¯¼ö´Â µû·Î register¶ó°í ÁöÁ¤ÇÏÁö ¾ÊÀº ÀÌ»ó ¸ðµÎ volatileÀ̾ú±â ¶§¹®ÀÌ´Ù. ¿©ÀüÈ÷ GCC·Î cc -O6¿Í °°ÀÌ ÄÄÆÄÀÏÀ» ÇÏ°í, ÇÊ¿äÇÑ °Í¿¡¸¸ volatileÀ̶ó°í ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. ¸ðµç ÇÁ·Î¼¼¼­ÀÇ ·¹Áö½ºÅ͸¦ ¼öÁ¤ÇÏ´Â °ÍÀ¸·Î Ç¥½ÃµÇ¾î ÀÖ´Â ¾î¼Àºí¸®¾î ¶ô(lock)À» »ç¿ëÇϸé, GCC°¡ ¸ðµç º¯¼öµéÀ» ´Ù ³»º¸³»¼­(flush), volatileÀ̶ó°í ¼±¾ðÇÔÀ¸·Î½á ¹ß»ýÇÏ´Â "ºñÈ¿À²ÀûÀÎ" ÄÚµåµéÀ» ÇÇÇÒ ¼ö ÀÖ°Ô ÇÏ´Â È¿°ú°¡ ÀÖ´Ù´Â ¼Ò¹®ÀÌ ÀÖ¾î¿Ô´Ù. ÀÌ·± ¹æ¹ýÀº GCC 2.7.0À» »ç¿ëÇÏ´Â °æ¿ì, Á¤ÀûÀ¸·Î ÇÒ´çµÇ´Â Àü¿ªº¯¼ö¿¡ ´ëÇؼ­´Â Á¦´ë·Î µ¿ÀÛÇÏ´Â °Íó·³ º¸ÀδÙ... ±×·¸Áö¸¸, ÀÌ·± ÇൿÀº ANSI C Ç¥ÁØ¿¡¼­´Â ÇÊ¿äÇÏÁö ¾Ê´Ù. ´õ ³ª»Û °ÍÀº Àбâ Á¢±Ù¸¸À» ÇÏ´Â ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀº º¯¼ö °ªÀ» ¿µ¿øÈ÷ ·¹Áö½ºÅÍ¿¡ ¹öÆÛ¸µÀ» ÇÒ ¼ö À־, °øÀ¯ ¸Þ¸ð¸®ÀÇ °ªÀÌ ½ÇÁ¦·Î º¯ÇÏ´Â °ÍÀ» Àý´ë·Î ¾Ë¾ÆÂ÷¸®Áö ¸øÇÒ ¼öµµ ÀÖ´Ù. ¿ä¾àÇϸé, ÇÏ°í ½ÍÀº´ë·Î Çصµ ÁÁÁö¸¸, volatile¶ó°í ÁöÁ¤ÇÑ º¯¼ö¸¸ÀÌ Á¦´ë·Î µ¿ÀÛÇÑ´Ù´Â °ÍÀ» º¸ÀåÇÒ ¼ö ÀÖ´Ù. ÀÏ¹Ý º¯¼ö¿¡µµ volatile ¼Ó¼ºÀ» ¾Ï½ÃÇÏ´Â Çüº¯È¯(type cast)À» »ç¿ëÇÏ¿© volatile Á¢±ÙÀ» ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, º¸ÅëÀÇ int i;´Â *((volatile int *) &i);°°ÀÌ ¼±¾ðÇÏ¿© volatile·Î Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô Çϸé Èֹ߼º(volatility)ÀÌ ÇÊ¿äÇÑ °æ¿ì¿¡¸¸, ÀÌ·± ¿À¹öÇìµå¸¦ »ç¿ëÇϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. 2.2.4. ¶ô(Locks) ++i;´Â Ç×»ó °øÀ¯ ¸Þ¸ð¸®¿¡ ÀÖ´Â º¯¼ö i¿¡ 1À» ´õÇÑ´Ù°í »ý°¢ÇØ¿Ô´Ù¸é, ´ÙÀ½ À̾߱â´Â Á¶±ÝÀº ³î¶ø°í ´çȲ½º·¯¿ïÁöµµ ¸ð¸£°Ú´Ù. ÇϳªÀÇ ¸í·ÉÀ¸·Î ÄÚµùÀ» Çß´Ù°í ÇÏ´õ¶óµµ, °ªÀ» ÀÐ°í °á°ú¸¦ ¾²´Â °ÍÀº º°µµÀÇ ¸Þ¸ð¸® ó¸®(transaction)À» ÅëÇؼ­ ÀÌ·ç¾îÁö¸ç, ÀÌ µÎ ó¸® »çÀÌ¿¡ ´Ù¸¥ ÇÁ·Î¼¼¼­°¡ i¿¡ Á¢±ÙÇÒ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î, µÎ°³ÀÇ ÇÁ·Î¼¼¼­°¡ ¸ðµÎ ++i; ¸í·ÉÀ» ¼öÇàÇÏ¿´´Âµ¥, 2°¡ Áõ°¡ÇÏ´Â°Ô ¾Æ´Ï¶ó 1ÀÌ Áõ°¡ÇÒ ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÎÅÚ PentiumÀÇ "±¸Á¶(Architecture)¿Í ÇÁ·Î±×·¡¹Ö ¸Å´º¾ó"¿¡ µû¸£¸é, LOCK Á¢µÎ¾î´Â ´ÙÀ½¿¡ ³ª¿À´Â ¸í·É¾î°¡ ±×°ÍÀÌ Á¢±ÙÇÏ´Â ¸Þ¸ð¸® À§Ä¡¿¡ ´ëÇØ ¿øÀÚÀûÀ¸·Î ÀÌ·ç¾îÁö´Â °ÍÀ» º¸ÀåÇϱâ À§ÇØ »ç¿ëµÈ´Ù. ______________________________________________________________________ BTS, BTR, BTC mem, reg/imm XCHG reg, mem XCHG mem, reg ADD, OR, ADC, SBB, AND, SUB, XOR mem, reg/imm NOT, NEG, INC, DEC mem CMPXCHG, XADD ______________________________________________________________________ ±×·¸Áö¸¸, ÀÌµé ¿¬»êÀ» ¸ðµÎ »ç¿ëÇÏ´Â °ÍÀº ±×´ÙÁö ÁÁÀº »ý°¢Àº ¾Æ´Ñ °Í °°´Ù. ¿¹¸¦ µé¾î, XADD´Â 386¿¡¼­´Â Á¸ÀçÇÏÁöµµ ¾Ê°í, µû¶ó¼­ À̸¦ »ç¿ëÇÏ´Â °ÍÀº ȣȯ¼ºÀÇ ¹®Á¦¸¦ ¹ß»ý½Ãų ¼ö ÀÖ´Ù. XCHG ¸í·É¾î´Â LOCK Á¢µÎ¾î°¡ ¾ø´õ¶óµµ Ç×»ó ¶ôÀ» »ç¿ëÇÑ´Ù. µû¶ó¼­ ÀÌ ¸í·É¾î´Â ¼¼¸¶Æ÷¾î(semaphore)³ª °øÀ¯ Å¥(shared queue)°°Àº °í¼öÁØÀÇ ¿øÀÚÀûÀÎ ±¸¼ºÃ¼¸¦ ¸¸µå´Â °æ¿ì¿¡ ÁÁÀº ¿øÀÚÀûÀÎ ¿¬»êÀÌ´Ù. ´ç¿¬È÷ C ÄÚµå·Î GCC°¡ ÀÌ ¸í·É¾î¸¦ ¸¸µé¾î³»µµ·Ï ÇÒ ¼ö´Â ¾ø´Ù. ´ë½Å ÀζóÀÎ(in- line) ¾î¼Àºí¸® Äڵ带 Á¶±Ý »ç¿ëÇØ¾ß ÇÑ´Ù. ¿öµå(word) Å©±âÀÇ volatile °´Ã¼ÀÎ obj¿Í ¿öµå Å©±âÀÇ ·¹Áö½ºÅÍ °ªÀÎ reg°¡ ÀÖ´Ù¸é, GCC ÀζóÀÎ ¾î¼Àºí¸® ÄÚµå´Â ´ÙÀ½°ú °°´Ù : ______________________________________________________________________ __asm__ __volatile__ ("xchgl %1,%0" :"=r" (reg), "=m" (obj) :"r" (reg), "m" (obj)); ______________________________________________________________________ ¶ô(lock)À» Çϴµ¥ ºñÆ®(bit) ¿¬»êÀ» »ç¿ëÇÏ´Â GCC ÀζóÀÎ ¾î¼Àºí¸® ÄÚµåÀÇ ¿¹Á¦°¡ bb_threads library ¶óÀ̺귯¸®ÀÇ ¼Ò½º Äڵ忡 ÀÖ´Ù. ¸Þ¸ð¸® ó¸®(transaction)¸¦ ¿øÀÚÀûÀ¸·Î ¸¸µå´Â °Í¿¡µµ ÀÌ¿¡ µû¸£´Â ºñ¿ëÀÌ ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. º¸ÅëÀÇ ÂüÁ¶´Â Áö¿ª ij½Ã¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â »ç½Ç¿¡ ºñÃ߾¸é, ¶ô(lock)À» ÇÏ´Â ¿¬»êÀº ¾à°£ÀÇ ¿À¹öÇìµå¸¦ ¼ö¹ÝÇÏ°í, ´Ù¸¥ ÇÁ·Î¼¼¼­ÀÇ ¸Þ¸ð¸® È°µ¿À» Áö¿¬½Ãų ¼ö ÀÖ´Ù. ¶ô(lock) ¿¬»êÀ» »ç¿ëÇÏ´Â °æ¿ì °¡Àå ÁÁÀº ¼º´ÉÀ» ³»°í ½Í´Ù¸é °¡´ÉÇÑ À̸¦ Àû°Ô »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´õ ³ª¾Æ°¡ À̵é IA32 ¿øÀÚÀûÀÎ ¸í·É¾îµéÀº ´Ù¸¥ ½Ã½ºÅÛ°úÀÇ È£È¯¼ºÀÌ ¾ø´Ù. ¾î¶² ¼ø°£ÀÌµç ¸¹¾Æµµ ÇϳªÀÇ ÇÁ·Î¼¼¼­¸¸ÀÌ ÁÖ¾îÁø °øÀ¯ °´Ã¼¸¦ °»½ÅÇÏ´Â °ÍÀ» º¸ÀåÇÏ´Â ¿©·¯°¡Áö µ¿±âÈ­(synchronization) - »óÈ£ ¹èÁ¦(mutual exclusion)¸¦ Æ÷ÇÔÇÏ¿© - ¸¦ ±¸ÇöÇϴµ¥ º¸ÅëÀÇ ¸í·É¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ¿©·¯°¡Áö ´Ù¸¥ Á¢±Ù¹æ¹ýÀÌ ÀÖ´Ù. ´ëºÎºÐÀÇ OS ±³Àç¿¡¼­´Â ÀÌµé ±â¹ýÀ» Àû¾îµµ Çϳª ÀÌ»ó¾¿Àº ´Ù·ç°í ÀÖ´Ù. Abraham Silberschatz¿Í Peter B GalvinÀÌ ÁöÀº ¿î¿µÃ¼Á¦ °³³ä(Operating System Concepts) 4ÆÇ(ISBN 0-201-50480-4)¿¡¼­ À̸¦ ¾ÆÁÖ Àß ´Ù·ç°í ÀÖ´Ù. 2.2.5. ij½Ã¶óÀÎ Å©±â(Cache Line Size) ¿øÀÚ¼º¿¡ °ü·ÃµÈ ±âº»ÀûÀÎ °ÍÀ¸·Î¼­ SMP ¼º´É¿¡ Å« ¿µÇâÀ» ¹ÌÄ¥ ¼ö ÀÖ´Â °ÍÀ¸·Î ij½Ã¶óÀÎ Å©±â°¡ ÀÖ´Ù. MPS Ç¥ÁØ¿¡´Â ¾î¶² ij½Ã°¡ »ç¿ëµÇµçÁö °£¿¡ ÂüÁ¶´Â ÀÏ°üÀûÀ̾î¾ß ÇÑ´Ù°í ÇÏ°í ÀÖÁö¸¸, »ç½ÇÀº ÇϳªÀÇ ÇÁ·Î¼¼¼­°¡ ¸Þ¸ð¸®ÀÇ Æ¯Á¤ ¶óÀο¡ ±â·ÏÀ» ÇÒ ¶§, ÀÌÀü ¶óÀÎÀÇ Ä³½ÃµÈ º¹»çº»ÀÌ ¸ðµÎ ¹«È¿È­(invalidate)µÇ°Å³ª °»½Å(update)µÇ¾î¾ß ÇÑ´Ù. ÀÌ ¸»Àº µÎ °³³ª ±× ÀÌ»óÀÇ ÇÁ·Î¼¼¼­°¡ µ¿½Ã¿¡ °°Àº ¶óÀÎÀÇ ´Ù¸¥ ºÎºÐ¿¡ µ¥ÀÌÅ͸¦ ±â·ÏÇÏ·Á°í Çϸé, »ó´ç·®ÀÇ Ä³½Ã¿Í ¹ö½º ÅëÇà(traffic)ÀÌ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¸ç, ½ÇÁúÀûÀ¸·Î ij½Ã¿¡¼­ ij½Ã·Î ¶óÀÎÀ» Àü´ÞÇÏ°Ô µÈ´Ù. ÀÌ ¹®Á¦´Â À߸øµÈ °øÀ¯(false sharing)¶ó°í ÇÑ´Ù. ±× ÇØ°áÃ¥Àº º´·Ä·Î Á¢±ÙµÇ´Â µ¥ÀÌÅÍ°¡ µÇµµ·ÏÀÌ¸é °¢ ÇÁ·Î¼¼¼­¸¶´Ù ´Ù¸¥ ij½Ã ¶óÀο¡¼­ ¿Ã ¼ö ÀÖµµ·Ï µ¥ÀÌÅ͸¦ Á¶Á÷È­Çϵµ·Ï ÇÏ´Â °ÍÀÌ´Ù. À߸øµÈ °øÀ¯´Â L2 ij½Ã¸¦ »ç¿ëÇÏ´Â ½Ã½ºÅÛ¿¡¼­´Â ¹®Á¦°¡ ¾ÈµÉ°Å¶ó°í »ý°¢ÇÒ ¼öµµ ÀÖ°ÚÁö¸¸, ¿©ÀüÈ÷ º°µµÀÇ L1 ij½Ã°¡ ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ. ij½ÃÀÇ Á¶Á÷°ú ±¸º°µÈ º°µµÀÇ ·¹º§ÀÇ °¹¼ö´Â ¸ðµÎ º¯ÇÒ ¼ö ÀÖÁö¸¸, Pentium L1 ij½Ã¶óÀÎ Å©±â´Â 32 ¹ÙÀÌÆ®ÀÌ°í, ÀüÇüÀûÀÎ ¿ÜÀåÇü ij½Ã¶óÀÎ Å©±â´Â 256 ¹ÙÀÌÆ® °¡·®ÀÌ´Ù. µÎ Ç׸ñÀÇ ÁÖ¼Ò°¡ (¹°¸®Àû ÁÖ¼ÒÀ̵ç, °¡»ó ÁÖ¼ÒÀ̵ç) a¿Í bÀÌ°í, °¡Àå Å« ÇÁ·Î¼¼¼­´ç ij½Ã¶óÀÎ Å©±â°¡ cÀÌ°í, À̵éÀº ¸ðµÎ 2ÀÇ ¸î Á¦°ö½ÂÀ̶ó°í ÇÏÀÚ. ¸Å¿ì ¾ö¹ÐÇÏ°Ô Çϸé, ((int) a) & ~(c - 1)¿Í ((int) b) & ~(c - 1)ÀÌ °°À» ¶§, µÎ°³ÀÇ ÂüÁ¶°¡ ¶È°°Àº ij½Ã¶óÀο¡ Á¸ÀçÇÏ°Ô µÈ´Ù. ´õ ±ÔÄ¢À» °£´ÜÈ­ÇÏ¸é º´·Ä·Î ÂüÁ¶µÇ´Â °øÀ¯ °´Ã¼°¡ Àû¾îµµ c ¹ÙÀÌÆ®°¡ ¶³¾îÁ® ÀÖ´Ù¸é, À̵éÀº ´Ù¸¥ ij½Ã ¶óÀÎÀ¸·Î ¸ÅÇÎÀÌ µÈ´Ù´Â °ÍÀÌ´Ù. 2.2.6. ¸®´ª½º ½ºÄÉÁÙ·¯ ³íÁ¡(Linux Scheduler Issues) º´·Ä󸮿¡¼­ °øÀ¯ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â ÀüÀûÀÎ ÀÌÀ¯´Â OSÀÇ ¿À¹öÇìµå¸¦ ÇÇÇÏÀÚ´Â °ÍÀÌÁö¸¸, OS ¿À¹öÇìµå´Â Åë½Å ±× ÀÚü ¿ÜÀÇ °Í¿¡¼­ ¹ß»ýÇϱ⵵ ÇÑ´Ù. ¿ì¸®´Â ÀÌ¹Ì ¸¸µé¾î¾ß ÇÒ ÇÁ·Î¼¼½ºÀÇ °¹¼ö°¡ ±â°è¿¡ ÀÖ´Â ÇÁ·Î¼¼¼­ÀÇ °¹¼öº¸´Ù °°°Å³ª À۾ƾßÇÑ´Ù°í ¸»Çß¾ú´Ù. ±×·¯³ª Á¤È®È÷ ¾ó¸¶³ª ¸¹Àº ÇÁ·Î¼¼½º¸¦ ¸¸µé¾î¾ß ÇÒ Áö ¾î¶»°Ô °áÁ¤ÇÒ ¼ö ÀÖÀ»±î? ÃÖ°íÀÇ ¼º´ÉÀ» ³»·Á¸é, ¿©·¯ºÐÀÌ ÀÛ¼ºÇÑ º´·Ä ÇÁ·Î±×·¥¿¡ ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ °¹¼ö´Â, ´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­ °è¼ÓÇؼ­ ½ÇÇàµÉ ¼ö ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ °¹¼öÇÏ°í °°¾Æ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î, ³×°³ÀÇ ÇÁ·Î¼¼¼­°¡ ÀÖ´Â SMP ½Ã½ºÅÛ¿¡¼­ ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ ´Ù¸¥ ¸ñÀûÀ¸·Î (¿¹¸¦ µé¾î WWW ¼­¹ö) µ¿ÀÛÇÏ°í ÀÖ´Ù¸é, ¿©·¯ºÐÀÌ ¸¸µç º´·Ä ÇÁ·Î±×·¥Àº ¼¼°³ÀÇ ÇÁ·Î¼¼½º¸¸À» »ç¿ëÇØ¾ß ÇÑ´Ù. ½Ã½ºÅÛ¿¡ ¸î °³ÀÇ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ ÀÖ´ÂÁö´Â uptime ¸í·É¿¡¼­ µ¹·ÁÁÖ´Â "Æò±Õ ºÎÇÏ(load average)"¸¦ ÂüÁ¶ÇÏ¿© ´ë°­Àº ¾Ë ¼ö ÀÖ´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î renice ¸í·ÉÀ̳ª nice() ½Ã½ºÅÛ ÄÝ °°Àº °ÍÀ» ÀÌ¿ëÇÏ¿© º´·Ä ÇÁ·Î±×·¥¿¡ ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ ¿ì¼±¼øÀ§(priority)¸¦ ³ôÀÏ ¼öµµ ÀÖ´Ù. ¿ì¼±¼øÀ§¸¦ ³ôÀÌ·Á¸é ±ÇÇÑÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ »ý°¢Àº ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ÇÁ·Î¼¼¼­¿¡¼­ ¦i¾Æ³»¼­ ÀÚ½ÅÀÌ ¸¸µç ÇÁ·Î±×·¥ÀÌ ¸ðµç ÇÁ·Î¼¼¼­¿¡¼­ °è¼ÓÇؼ­ ½ÇÇàµÉ ¼ö ÀÖ°Ô ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀº ¿¡ ÀÖ´Â ½Ç½Ã°£(real-time) ½ºÄÉÁÙ·¯¸¦ Á¦°øÇÏ´Â SMP ¸®´ª½ºÀÇ ÇÁ·ÎÅäŸÀÔ(prototype) ¹öÀüÀ» »ç¿ëÇϸé Á»´õ È®½ÇÇÏ°Ô ´Þ¼ºÇÒ ¼ö ÀÖ´Ù ¿©·¯ºÐÀÌ SMP ½Ã½ºÅÛÀ» º´·Ä ±â°è·Î »ç¿ëÇÏ´Â À¯ÀÏÇÑ »ç¿ëÀÚ°¡ ¾Æ´Ï¶ó¸é, °è¼Ó ½ÇÇàÇÏ·Á°í ÇÏ´Â µÎ °³ ÀÌ»óÀÇ º´·Ä ÇÁ·Î±×·¥ »çÀÌ¿¡ Ãæµ¹ÀÌ ºú¾îÁú ¼öµµ ÀÖ´Ù. ÀÌÀÇ Ç¥ÁØ ÇØ°á¹æ¹ýÀº Á¶´ÜÀ§(gang) ½ºÄÉÁÙ¸µ - Áï µ¿½Ã¿¡ ÇϳªÀÇ º´·Ä ÇÁ·Î±×·¥¿¡ ¼ÓÇÏ´Â ÇÁ·Î¼¼½ºµé¸¸ÀÌ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ½ºÄÉÁÙ¸µ ¿ì¼±¼øÀ§¸¦ ´Ù·ç´Â °ÍÀÌ´Ù. ±×·¸Áö¸¸ Çϳª ÀÌ»óÀ» º´·Äó¸®ÇÏ¸é °á°ú°¡ ´Ê°Ô µ¹¾Æ¿À°í, ½ºÄÉÁÙ·¯ÀÇ È°µ¿ÀÌ ¿À¹öÇìµå¸¦ ´õÇÏ°Ô µÈ´Ù´Â °ÍÀ» »ó±âÇϱ⠹ٶõ´Ù. µû¶ó¼­, ¿¹¸¦ µé¾î ³× °³ÀÇ ÇÁ·Î¼¼¼­¸¦ °¡Áø ½Ã½ºÅÛ¿¡ µÎ °³ÀÇ ÇÁ·Î±×·¥À» ½ÇÇàÇÑ´Ù¸é, µÎ °³ÀÇ ÇÁ·Î¼¼½º¸¦ °¢°¢ ½ÇÇàÇÏ´Â °ÍÀÌ, µÎ °³ÀÇ ÇÁ·Î±×·¥ÀÌ ³×°³ÀÇ ÇÁ·Î¼¼½º¸¦ °¢°¢ »ç¿ëÇϸ鼭 Á¶´ÜÀ§ ½ºÄÉÁÙ¸µÀ» ÇÏ´Â °Íº¸´Ù ´õ ³´´Ù. ÀÌ·± ¹®Á¦¸¦ ´õ ²¿ÀÌ°Ô ÇÏ´Â °ÍÀÌ Çϳª ´õ ÀÖ´Ù. ¿©·¯ºÐÀÌ ³·¿¡´Â Á¾ÀÏ °úÁßÇÏ°Ô »ç¿ëµÇ°í ÀÖÁö¸¸, ¹ã¿¡´Â ¿ÏÀüÈ÷ º´·Ä󸮿ëÀ¸·Î¸¸ »ç¿ë°¡´ÉÇÑ ±â°è¿¡¼­ ÇÁ·Î±×·¥À» °³¹ßÇÏ°í ÀÖ´Ù°í ÇÏÀÚ. ¿©·¯ºÐÀº ³·¿¡ Å×½ºÆ®¸¦ Çϴ°ÍÀÌ ´À¸®´Ù´Â °ÍÀ» ¾Ë´õ¶óµµ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ°í ÀÛ¼ºÇÑ Äڵ带 Å×½ºÆ®ÇÏ°í ¼öÁ¤Çϱâ À§ÇØ ¸ðµç °¹¼öÀÇ ÇÁ·Î¼¼½º¸¦ ¸¸µé¾î »ç¿ëÇÒ °ÍÀÌ´Ù. ±×·±µ¥, ÇÁ·Î¼¼½ºµéÀÌ ÇöÀç ½ÇÇàµÇ°í ÀÖÁö ¾Ê´Â (´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­) ´Ù¸¥ ÇÁ·Î¼¼½º¿Í °øÀ¯ ¸Þ¸ð¸®·Î °ªÀ» Àü´ÞÇϱ⸸À» ¾Æ¹«°Íµµ ÇÏÁö ¾Ê°í ±â´Ù¸®°í ÀÖ´Ù¸é, À̵é ÀÛ¾÷Àº ¸Å¿ì ´À·ÁÁú °ÍÀÌ´Ù. ÀÌ¿Í ¶È°°Àº ¹®Á¦´Â Äڵ带 ÇϳªÀÇ ÇÁ·Î¼¼¼­¹Û¿¡ ¾ø´Â ½Ã½ºÅÛ¿¡¼­ °³¹ßÇÏ°í Å×½ºÆ®ÇÏ´Â °æ¿ì¿¡µµ ¹ß»ýÇÑ´Ù. ÇØ°áÃ¥Àº Äڵ忡¼­ ´Ù¸¥ ÇÁ·Î¼¼¼­¿¡¼­ ÀϾ´Â µ¿ÀÛÀ» ÇÏ¿°¾øÀÌ ±â´Ù·Á¾ß ÇÏ´Â ºÎºÐ¿¡, ¸®´ª½º°¡ ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Â ±âȸ¸¦ ÁÖµµ·Ï ÇÔ¼ö È£ÃâÀ» Áý¾î³Ö´Â °ÍÀÌ´Ù. ³ª´Â C ¸ÅÅ©·Î¸¦ »ç¿ëÇϴµ¥ À̸¦ ÇÏ´Â ¸ÅÅ©·Î¸¦ IDLE_ME¶ó°í ºÎ¸£°í ÀÖ´Ù. ÇÁ·Î±×·¥À» Å×½ºÆ®Çϱâ À§Çؼ­ ÄÄÆÄÀÏÀ» ÇÒ¶§´Â cc -DIDLE_ME=usleep(1) °°ÀÌ ÇÏ°í, "Á¦Ç°"À¸·Î ½ÇÇàÇÒ ¶§¿¡´Â cc -DIDLE_ME={}°°ÀÌ ÄÄÆÄÀÏÀ» ÇÑ´Ù. usleep(1)Àº 1/1000 Ãʵ¿¾È ÇÁ·Î¼¼½º°¡ Àáµé°Ô ÇÏ¿©, ¸®´ª½º ½ºÄÉÁÙ·¯°¡ ±× ÇÁ·Î¼¼¼­¿¡¼­ ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇϵµ·Ï ¼±ÅÃÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù. ÇÁ·Î¼¼½ºÀÇ °¹¼ö°¡ »ç¿ë°¡´ÉÇÑ ÇÁ·Î¼¼¼­ÀÇ °¹¼öº¸´Ù µÎ¹èÀÌ»ó ¸¹´Ù¸é, usleep(1)¸¦ »ç¿ëÇÏ´Â Äڵ尡 À̸¦ »ç¿ëÇÏÁö ¾Ê´Â Äڵ庸´Ù ¿­¹èÀÌ»ó ºü¸£°Ô ½ÇÇàµÇ´Â °ÍÀº ±×¸® ÀÌ»óÇÑ ÀÏÀÌ ¾Æ´Ï´Ù. 2.3. bb_threads bb_threads("Bare Bones(»À¸¸³²Àº)" threads) ¶óÀ̺귯¸®( )´Â ¸®´ª½º clone() È£ÃâÀÇ »ç¿ë¹ýÀ» º¸¿©ÁÖ´Â ¾ÆÁÖ °£´ÜÇÑ ¶óÀ̺귯¸®ÀÌ´Ù. tar ÆÄÀÏÀ» gzipÀ¸·Î ¾ÐÃàÇÏ¸é °Ü¿ì 7K ¹ÙÀÌÆ®¹Û¿¡ µÇÁö ¾Ê´Â´Ù! ÀÌ ¶óÀ̺귯¸®´Â 2.4Àå¿¡¼­ ¼³¸íÇÏ´Â LinuxThreads ¶óÀ̺귯¸® ¶§¹®¿¡ ÀÌÁ¦ Çѹ°°£ °ÍÀÌ µÇ¾úÁö¸¸, ¿©ÀüÈ÷ ¾µ¸¸ÇÏ°í, ÀÛ°í °£´ÜÇÏ¿© ¸®´ª½º¿¡¼­ Áö¿øÇÏ´Â ¾²·¹µåÀÇ »ç¿ë¹ýÀ» ¼Ò°³Çϴµ¥¿¡µµ ¾Ë¸Â´Ù. ºÐ¸íÈ÷ LinuxThreads¿ë ¼Ò½ºÄڵ带 º¸´Â °Íº¸´Ù ÀÌ Äڵ带 º¸´Â °ÍÀÌ ÈξÀ ´ú ±âÁ×À» °ÍÀÌ´Ù. ¿ä¾àÇϸé bb_threads ¶óÀ̺귯¸®´Â ½ÃÀÛÇϱâ ÁÁÀº ÁöÁ¡ÀÌÁö¸¸, Å« ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé¶§¿¡´Â Àû´çÇÏÁø ¾Ê´Ù. bb_threads ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÇ ±âº»ÀûÀÎ ±¸Á¶´Â ´ÙÀ½°ú °°´Ù : 1. ÇϳªÀÇ ÇÁ·Î¼¼½º·Î ÇÁ·Î±×·¥À» ½ÃÀÛÇÑ´Ù. 2. ÀÌÁ¦ °¢°¢ÀÇ ¾²·¹µå°¡ ÇÊ¿ä·Î ÇÏ´Â ÃÖ´ë ½ºÅÃÀÇ Å©±â¸¦ °è»êÇØ¾ß ÇÑ´Ù. À̸¦ Å©°Ô Àâ´õ¶óµµ ±×´ÙÁö ÇØ°¡ µÇÁö ¾Ê´Â´Ù (ÀÌ°ÍÀº °¡»ó ¸Þ¸ð¸®°¡ Á¸ÀçÇÏ´Â ÀÌÀ¯ÁßÀÇ ÇϳªÀÌ´Ù). ±×·¯³ª ¸ðµç ½ºÅÃÀº ÇϳªÀÇ °¡»ó ÁÖ¼Ò °ø°£¿¡¼­ ³ª¿À±â ¶§¹®¿¡, ³Ê¹« Å©°Ô Àâ´Â °Íµµ ÁÁÀº»ý°¢ÀÌ ¾Æ´Ï´Ù. ¿¹Á¦¿¡¼­´Â 64K¸¦ »ç¿ëÇÏ°í ÀÖ´Ù. ÀÌ Å©±â¸¦ b ¹ÙÀÌÆ®·Î ¼³Á¤ÇÏ·Á¸é bb_threads_stacksize(b)¸¦ È£ÃâÇÑ´Ù. 3. ´ÙÀ½ ´Ü°è´Â ÇÊ¿äÇÑ ¶ô(lock)µéÀ» ¸ðµÎ ÃʱâÈ­ÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¶óÀ̺귯¸®¿¡¼­ ±¸ÇöµÈ ¶ô ¸ÞÄ¿´ÏÁòÀº ¶ô¿¡ 0ºÎÅÍ MAX_MUTEXES±îÁö ¼ýÀÚ¸¦ ºÙÀÌ´Â °ÍÀÌ´Ù. ¶ô i¸¦ ÃʱâÈ­ÇÏ·Á¸é bb_threads_mutexcreate(i)¸¦ È£ÃâÇÑ´Ù. 4. ¶óÀ̺귯¸® ·çƾÀ» È£ÃâÇÏ¿© »õ·Î¿î ¾²·¹µå¸¦ ¸¸µç´Ù. ¿©±â¿¡ ÀÎÀÚ·Î »õ·Î¿î ¾²·¹µå°¡ ½ÇÇàÇÒ ÇÔ¼ö¿Í, ¿©±â¿¡ Àü´ÞÇÒ ÀÎÀÚµéÀ» ³Ñ°ÜÁØ´Ù. ÀÎÀÚ·Î arg Çϳª¸¸ ¹Þ°í, ¾Æ¹«°Íµµ µ¹·ÁÁÖÁö ¾Ê´Â ÇÔ¼ö f¸¦ ½ÇÇàÇÏ´Â ¾²·¹µå¸¦ »õ·Î ¸¸µç´Ù¸é, ÇÔ¼ö f>¸¦ void f(void *arg, size_t dummy) ó·³ ¼±¾ðÀ» ÇÏ°í bb_threads_newthread(f, &arg)ÇÔ¼ö¸¦ ºÎ¸£¸é µÈ´Ù. Çϳª ÀÌ»óÀÇ ÀÎÀÚ¸¦ Àü´ÞÇؾßÇÏ´Â °æ¿ì ÀÎÀÚ °ªµéÀ» °¡Áö°í ÀÖ´Â ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ³Ñ°ÜÁÖ¸é µÈ´Ù. 5. º´·Ä Äڵ带 ½ÇÇàÇÑ´Ù. ¶ôÀ» »ç¿ëÇÏ´Â bb_threads_lock(n)¿Í bb_threads_unlock(n) ÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§ ÁÖÀǸ¦ ±â¿ïÀδ٠(¿©±â¼­ nÀº »ç¿ëÇÒ ¶ôÀ» ÁöÁ¤ÇÑ´Ù). ÀÌ ¶óÀ̺귯¸®¿¡ ÀÖ´Â ¶ôÀ» °É°í ¶ôÀ» ÇØÁ¦ÇÏ´Â ¿¬»êÀº ¿øÀÚÀûÀÎ ¹ö½º-¶ô(bus-lock) ¸í·É¾î¸¦ »ç¿ëÇÏ´Â ¸Å¿ì ±âº»ÀûÀÎ ½ºÇɶô(spin lock)ÀÌ´Ù. ±×·¡¼­ °úµµÇÑ ¸Þ¸ð¸® Á¢±Ù Ãæµ¹À» ÀÏÀ¸Å³ ¼ö ÀÖÀ¸¸ç, ¾î¶² Á¢±Ùµµ °øÁ¤ÇÏ´Ù´Â °ÍÀ» º¸ÁõÇÒ ¼ö ¾ø´Ù. bb_threads¿¡ ÇÔ²² µþ·Á¿À´Â ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼­ º¸¸é ÇÔ¼ö fnn°ú main¿¡¼­ µ¿½Ã¿¡ printf()¸¦ ½ÇÇàÇÏ´Â °ÍÀ» ¸·´Âµ¥¿¡ ¶ôÀ» ¿Ç¹Ù¸£°Ô »ç¿ëÇÏÁö ¾Ê°í ÀÖ´Ù. ÀÌ°Í ¶§¹®¿¡ ¿¹Á¦´Â Ç×»ó µ¿ÀÛÇÏÁö´Â ¾Ê´Â´Ù. ³»°¡ ÀÌ ¸»À»ÇÏ´Â °ÍÀº ¿¹Á¦ ÇÁ·Î±×·¥¿¡ Æ®ÁýÀ» Àâ±â À§Çؼ­°¡ ¾Æ´Ï¶ó, ÀÌ°ÍÀÌ ¸Å¿ì ´Ù·ç±â ¾î·Æ´Ù´Â °Í°ú LinuxThreads¸¦ »ç¿ëÇÏ´Â °ÍÀÌ Á¶±Ý ½±´Ù´Â °É °­Á¶Çϱâ À§Çؼ­ÀÌ´Ù. 6. ¾²·¹µå°¡ return ¸í·ÉÀ» ½ÇÇàÇϸé, ÀÌ´Â ½ÇÁ¦ÀûÀ¸·Î ÇÁ·Î¼¼½º¸¦ Á×ÀÌ°Ô µÈ´Ù. ±×·¯³ª Áö¿ª ½ºÅà ¸Þ¸ð¸®´Â ÀÚµ¿À¸·Î ÇÒ´çÀÌ ÇØÁ¦µÇÁö ¾Ê´Â´Ù. ¾ö¹ÐÇÏ°Ô ¸»ÇÏ¸é ¸®´ª½º´Â ÇÒ´ç ÇØÁ¦¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¸ç, ¸Þ¸ð¸® °ø°£Àº ÀÚµ¿À¸·Î malloc()ÀÇ »ç¿ëÇÏÁö ¾Ê´Â ¸Þ¸ð¸® ¸ñ·Ï(free list)À¸·Î µÇµ¹¾Æ°¡ Ãß°¡µÇÁö ¾Ê´Â´Ù. µû¶ó¼­ ºÎ¸ð ÇÁ·Î¼¼½º´Â Á×Àº ÀÚ½Ä ÇÁ·Î¼¼½º¸¶´Ù bb_threads_cleanup(wait(NULL))¸¦ ºÒ·¯¼­ ÀÌ °ø°£À» ¹Ý³³ÇØ¾ß ÇÑ´Ù. ´ÙÀ½ C ÇÁ·Î±×·¥Àº 1.3Àå¿¡¼­ ¼³¸íÇÑ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿©, µÎ°³ÀÇ bb_threads ¾²·¹µå¸¦ ÀÌ¿ëÇؼ­ ÆÄÀÌ(pi)ÀÇ ±Ù»çÄ¡¸¦ °è»êÇÑ´Ù. ______________________________________________________________________ #include #include #include #include #include #include "bb_threads.h" volatile double pi = 0.0; volatile int intervals; volatile int pids[2]; /* Unix PIDs of threads */ void do_pi(void *data, size_t len) { register double width, localsum; register int i; register int iproc = (getpid() != pids[0]); /* set width */ width = 1.0 / intervals; /* do the local computations */ localsum = 0; for (i=iproc; i ´Â POSIX 1003.1c ¾²·¹µå Ç¥ÁØ¿¡ µû¶ó "¸ðµÎ °øÀ¯ÇÏ´Â" ¹æ½ÄÀ» ¿ÏÀüÇÏ°í Æ°Æ°ÇÏ°Ô ±¸ÇöÇÑ °ÍÀÌ´Ù. ´Ù¸¥ POSIX ¾²·¹µå¸¦ Æ÷ÆÃÇÑ °Í°ú´Â ´Þ¸®, LinuxThreads´Â bb_threads¿¡¼­ »ç¿ëÇÑ °Í°ú ¶È°°Àº ¸®´ª½º Ä¿³ÎÀÇ ¾²·¹µå(clone())¸¦ »ç¿ëÇÑ´Ù. POSIX¿Í ȣȯµÈ´Ù´Â °ÍÀº ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­ ¸¸µç »ó´ç¼öÀÇ ¾²·¹µå ÇÁ·Î±×·¥µéÀ» »ó´ëÀûÀ¸·Î ½±°Ô Æ÷ÆÃÇÒ ¼ö ÀÖÀ¸¸ç, Âü°íÇÒ ¼ö ÀÖ´Â ´Ù¾çÇÑ ¿¹Á¦°¡ ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. °£´ÜÈ÷ ¸»ÇØ, LinuxThreads´Â ¸®´ª½º¿¡¼­ ¹æ´ëÇÑ ±Ô¸ðÀÇ ¾²·¹µå ÇÁ·Î±×·¥À» °³¹ßÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Â È®½ÇÇÑ ¾²·¹µå ÆÐÅ°ÁöÀÌ´Ù. LinuxThreads ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ±âº» ÇÁ·Î±×·¥ ±¸Á¶´Â ´ÙÀ½°ú °°´Ù : 1. ÇϳªÀÇ ÇÁ·Î¼¼½º·Î ÇÁ·Î±×·¥À» ½ÃÀÛÇÑ´Ù. 2. ´ÙÀ½ ´Ü°è´Â ÇÊ¿äÇÑ ¶ô(lock)µéÀ» ¸ðµÎ ÃʱâÈ­ÇÏ´Â °ÍÀÌ´Ù. ¼ýÀÚ·Î ±¸º°µÇ´Â bb_threads ¶ô°ú´Â ´Þ¸® POSIX ¶ôµéÀº pthread_mutex_tŸÀÔ(type)ÀÇ º¯¼ö·Î ¼±¾ðµÈ´Ù. pthread_mutex_init(&lock,val)ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ÇÊ¿äÇÑ °¢°¢ÀÇ ¶ôµéÀ» ÃʱâÈ­ÇÑ´Ù. 3. bb_threads¿¡¼­Ã³·³ »õ·Î¿î ¾²·¹µå¸¦ ¸¸µé·Á¸é ¶óÀ̺귯¸® ·çƾÀ» È£ÃâÇØ¾ß ÇÑ´Ù. ¿©±â¼­ ÀÎÀÚ´Â »õ·Î¿î ¾²·¹µå°¡ ½ÇÇàÇÒ ÇÔ¼ö¿Í, ¿©±â¿¡ Àü´ÞÇÒ ÀÎÀÚµéÀÌ´Ù. ±×·¸Áö¸¸ POSIX¿¡¼­´Â »ç¿ëÀÚ°¡ °¢ ¾²·¹µå¸¦ ±¸º°ÇÒ ¼ö ÀÖµµ·Ï pthread_t ŸÀÔÀÇ º¯¼ö¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù. f() ÇÔ¼ö¸¦ ½ÇÇàÇÏ´Â pthread_t ¾²·¹µå¸¦ »ý¼ºÇÏ·Á¸é pthread_create(&thread,NULL,f,&arg)¸¦ È£ÃâÇÑ´Ù. 4. º´·Ä Äڵ带 ½ÇÇàÇÑ´Ù. ÇÊ¿äÇÑ °æ¿ì¿¡ pthread_mutex_lock(&lock)¿Í pthread_mutex_unlock(&lock)¸¦ È£ÃâÇϵµ·Ï ÁÖÀÇÇÑ´Ù. 5. pthread_join(thread,&retval) ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© °¢ ¾²·¹µå°¡ ³¡³­ÈÄ¿¡ ¸¶¹«¸®¸¦ ÇÑ´Ù. 6. C Äڵ带 ÄÄÆÄÀÏÇÒ ¶§ -D_REENTRANT ¿É¼ÇÀ» Ãß°¡ÇÑ´Ù. ´ÙÀ½Àº LinuxThreads¸¦»ç¿ëÇÏ¿© ÆÄÀÌ(pi)¸¦ °è»êÇÏ´Â º´·ÄÇÁ·Î±×·¥ÀÇ ¿¹ÀÌ´Ù. 1.3Àå¿¡¼­ »ç¿ëÇÑ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿´°í, bb_threads ¿¹Á¦¿¡¼­Ã³·³ µÎ°³ÀÇ ¾²·¹µå°¡ º´·Ä·Î ½ÇÇàµÈ´Ù. ______________________________________________________________________ #include #include #include "pthread.h" volatile double pi = 0.0; /* Approximation to pi (shared) */ pthread_mutex_t pi_lock; /* Lock for above */ volatile double intervals; /* How many intervals? */ void * process(void *arg) { register double width, localsum; register int i; register int iproc = (*((char *) arg) - '0'); /* Set width */ width = 1.0 / intervals; /* Do the local computations */ localsum = 0; for (i=iproc; ix·Î Á¢±ÙÇÒ ¼ö ÀÖ´Ù. 4. °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ» »ç¿ëÇÏ´Â ¸¶Áö¸· ÇÁ·Î¼¼½º°¡ Á¾·áÇϰųª ÀÌ ¿µ¿ª¿¡¼­ ¶³¾îÁ®³ª¿À¸é(detach) ÀÌ °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ» ¾ø¾Ö¾ßÇÑ´Ù. ÀÌ ±âº» ÇൿÀ» ¼³Á¤ÇÏ·Á¸é shmctl() ÇÔ¼ö¸¦ ºÎ¸¦ ÇÊ¿ä°¡ ÀÖ´Ù. ÄÚµå´Â shmctl(shmid, IPC_RMID, 0)°ú °°Àº ÇüÅ·ΠÀÛ¼ºÇÑ´Ù. 5. ¿øÇÏ´Â °¹¼ö·Î ÇÁ·Î¼¼½ºµéÀ» ¸¸µé·Á¸é Ç¥ÁØ ¸®´ª½ºÀÇ fork() ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. °¢°¢ÀÇ ÇÁ·Î¼¼½º´Â °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ» »ó¼Ó¹Þ°ÔµÈ´Ù. 6. ÇÁ·Î¼¼½º°¡ °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ» »ç¿ëÇÏ´Â ÀÛ¾÷À» ³¡¸¶Ä¡¸é, ÀÌ °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ¸·ÎºÎÅÍ ºÐ¸®(detach)ÇØ¾ß ÇÑ´Ù. ÀÌ´Â shmdt(shmptr)À» ºÒ·¯¼­ ÇÑ´Ù. À§¿¡ ¼³¸íÇÑ °úÁ¤¿¡¼­´Â ¸î°³ ¾ÈµÇ´Â ½Ã½ºÅÛ È£Ã⸸À» »ç¿ëÇÏÁö¸¸, ÀÏ´Ü °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀÌ ¸¸µé¾îÁö¸é, ÇϳªÀÇ ÇÁ·Î¼¼½º°¡ ¸Þ¸ð¸®»óÀÇ °ªÀ» ¹Ù²Û °æ¿ì ÀÚµ¿À¸·Î ¸ðµç ÇÁ·Î¼¼½º¿¡ º¸ÀÌ°Ô µÈ´Ù. °¡Àå Áß¿äÇÑ Á¡Àº °¢ Åë½Å ÀÛ¾÷ÀÌ ½Ã½ºÅÛ ÄÝÀ» ÇÏ´Â ¿À¹öÇìµå¾øÀÌ ÀÌ·ç¾îÁø´Ù´Â °ÍÀÌ´Ù. ´ÙÀ½Àº ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ» »ç¿ëÇÏ´Â C ÇÁ·Î±×·¥ÀÇ ¿¹ÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ÆÄÀÌ(pi)¸¦ °è»êÇÏ´Â °ÍÀ¸·Î 1.3Àå¿¡¼­ ³ª¿Â °Í°ú ¶È°°Àº ¾Ë°í¸®ÁòÀ» »ç¿ëÇÑ´Ù. ______________________________________________________________________ #include #include #include #include #include #include #include #include volatile struct shared { double pi; int lock; } *shared; inline extern int xchg(register int reg, volatile int * volatile obj) { /* Atomic exchange instruction */ __asm__ __volatile__ ("xchgl %1,%0" :"=r" (reg), "=m" (*obj) :"r" (reg), "m" (*obj)); return(reg); } main(int argc, char **argv) { register double width, localsum; register int intervals, i; register int shmid; register int iproc = 0;; /* Allocate System V shared memory */ shmid = shmget(IPC_PRIVATE, sizeof(struct shared), (IPC_CREAT | 0600)); shared = ((volatile struct shared *) shmat(shmid, 0, 0)); shmctl(shmid, IPC_RMID, 0); /* Initialize... */ shared->pi = 0.0; shared->lock = 0; /* Fork a child */ if (!fork()) ++iproc; /* get the number of intervals */ intervals = atoi(argv[1]); width = 1.0 / intervals; /* do the local computations */ localsum = 0; for (i=iproc; ilock))) ; shared->pi += localsum; shared->lock = 0; /* Terminate child (barrier sync) */ if (iproc == 0) { wait(NULL); printf("Estimation of pi is %f\n", shared->pi); } /* Check out */ return(0); } ______________________________________________________________________ ³ª´Â ÀÌ ¿¹Á¦¿¡¼­ ¶ô(lock)À» ±¸ÇöÇϱâ À§ÇØ IA32ÀÇ ¿øÀÚÀûÀÎ(atomic) ±³È¯(exchange) ¸í·É¾î¸¦ »ç¿ëÇÏ¿´´Ù. ´õ ³ªÀº ¼º´É°ú ȣȯ¼ºÀ» ¹Ù¶õ´Ù¸é, ¿øÀÚÀûÀÎ ¹ö½º-¶ô(bus-lock) ¸í·É¾î¸¦ »ç¿ëÇÏÁö ¾Ê´Â µ¿±âÈ­ ±â¹ýÀ¸·Î ´ëüÇϱ⠹ٶõ´Ù. ÇöÀç »ç¿ëÇÏ°í ÀÖ´Â ½Ã½ºÅÛ V IPC ±â´ÉµéÀÇ »óŸ¦ º¸¿©ÁÖ´Â ipcsÀ» ±â¾ïÇÏ°í ÀÖ´Ù¸é, ¿©·¯ºÐÀÌ ¸¸µç Äڵ带 µð¹ö±ëÇÒ ¶§ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. 2.6. ¸Þ¸ð¸® ¸Ê È£Ãâ ÆÄÀÏ I/O ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÏ´Â ºñ¿ëÀº ¸Å¿ì Ŭ ¼ö ÀÖ´Ù. »ç½Ç, ÀÌ°ÍÀÌ »ç¿ëÀÚ ¹öÆÛ¸¦ »ç¿ëÇÏ´Â ÆÄÀÏ I/O ¶óÀ̺귯¸®°¡ ÀÖ´Â ÀÌÀ¯ÀÌ´Ù (getchar(), fwrite() µî). ±×·¯³ª »ç¿ëÀÚ ¹öÆÛ´Â ¿©·¯°³ÀÇ ÇÁ·Î¼¼½º°¡ ¶È°°Àº ¾²±â °¡´ÉÇÑ ÆÄÀÏ¿¡ Á¢±ÙÇÏ°í ÀÖ´Ù¸é »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç, »ç¿ëÀÚ ¹öÆÛ¸¦ °ü¸®ÇÏ´Â ¿À¹öÇìµåµµ ²Ï Å©´Ù. BSD UNIX¿¡¼­´Â ÆÄÀÏÀÇ ÀϺθ¦ »ç¿ëÀÚ ¸Þ¸ð¸®·Î ¸ÅÇÎÇÏ¿© º»ÁúÀûÀ¸·Î °¡»ó ¸Þ¸ð¸® ÆäÀÌ¡ ¸ÞÄ¿´ÏÁòÀ» ÅëÇØ °»½ÅÀ» Çϵµ·Ï ÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛ ÄÝÀ» Ãß°¡ÇÏ¿© À̸¦ ÇØ°áÇÑ´Ù. ÀÌ¿Í ¶È°°Àº ¸ÞÄ¿´ÏÁòÀÌ ¸î³âÀü Sequent¿¡¼­ ¸¸µç ½Ã½ºÅÛ¿¡¼­ °øÀ¯ ¸Þ¸ð¸® º´·Äó¸® Áö¿øÀÇ ±â¹ÝÀ¸·Î »ç¿ëµÇ¾ú´Ù. (¾ÆÁÖ ¿À·¡µÈ) man ÆäÀÌÁö¿¡ ¸î°¡Áö ¸Å¿ì ºÎÁ¤ÀûÀÎ ÀÇ°ßÀÌ ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í, ¸®´ª½º´Â ±âº»ÀûÀÎ ÇÔ¼öµé Áß Àû¾îµµ ¸î°¡Áö´Â Á¦´ë·Î ¼öÇàÇϴµíÀÌ º¸À̸ç, ÀÌ ½Ã½ºÅÛ ÄÝÀ» ¿©·¯°³ÀÇ ÇÁ·Î¼¼½º°¡ °øÀ¯ÇÒ ¼ö ÀÖ´Â ¹«¸íÀÇ(anonymous) ¸Þ¸ð¸® ¿µ¿ªÀ¸·ÎÀÇ ¸ÅÇο¡ »ç¿ëÇÏ´Â °ÍÀ» Áö¿øÇÑ´Ù. º»ÁúÀûÀ¸·Î ¸®´ª½º¿¡¼­ÀÇ mmap() ±¸ÇöÀº 2.5Àå¿¡¼­ ¼³¸íÇÑ 2, 3, 4¹ø° ´Ü°è¸¦ Çϳª·Î ´ëüÇÑ °ÍÀÌ´Ù. ¹«¸íÀÇ °øÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀ» ¸¸µé·Á¸é : ______________________________________________________________________ shmptr = mmap(0, /* system assigns address */ b, /* size of shared memory segment */ (PROT_READ | PROT_WRITE), /* access rights, can be rwx */ (MAP_ANON | MAP_SHARED), /* anonymous, shared */ 0, /* file descriptor (not used) */ 0); /* file offset (not used) */ ______________________________________________________________________ ½Ã½ºÅÛ V °øÀ¯¸Þ¸ð¸®ÀÇ shmdt() ÇÔ¼ö¿Í ¶È°°Àº ÀÏÀ» ÇÏ´Â ÇÔ¼ö´Â munmap()ÀÌ´Ù : ______________________________________________________________________ munmap(shmptr, b); ______________________________________________________________________ ³» »ý°¢¿¡´Â ½Ã½ºÅÛ V °øÀ¯ ¸Þ¸ð¸® Áö¿ø ´ë½Å mmap()À» »ç¿ëÇÏ´Â °ÍÀÌ ½ÇÁ¦·Î ´õ ³´Áö´Â ¾Ê´Ù. 3. ¸®´ª½º ½Ã½ºÅÛÀÇ Å¬·¯½ºÅÍ(Clusters Of Linux Systems) ÀÌ ¼½¼ÇÀº ¸®´ª½º¸¦ »ç¿ëÇÑ Å¬·¯½ºÅÍ º´·Ä ó¸®ÀÇ °³°üÀ» Á¦°øÇÏ·Á°í ½ÃµµÇÒ °ÍÀÌ´Ù. Ŭ·¯½ºÅÍ´Â ÇöÀç °¡Àå ÀαâÀÖ´Â °ÍÀÌÀÚ °¡Àå ´Ù¾çÇÏ´Ù. ÀÌ°ÍÀº ÀüÅëÀûÀÎ ¿öÅ©½ºÅ×À̼ǵéÀ» ¿©·¯´ë ¹­Àº ³×Æ®¿÷(NOW; network of workstations)¿¡¼­ ÀÌÁ¦ ¸· ÇÁ·Î¼¼¼­ ³ëµå·Î½á ¸®´ª½º ÇǾ¾µé·Î »ç¿ëÇϱ⠽ÃÀÛÇÑ Ä¿½ºÅÒ º´·Ä ±â°è±îÁö ÀÖ´Ù. ¶ÇÇÑ ¸®´ª½º ±â°èµéÀÇ Å¬·¯½ºÅ͸¦ »ç¿ëÇÏ´Â º´·Ä 󸮸¦ À§ÇÑ ¸¹Àº ¼ÒÇÁÆ®¿þ¾î Áö¿øµéÀÌ ÀÖ´Ù. 3.1. ¿Ö Ŭ·¯½ºÅÍÀΰ¡(Why A Cluster)? Ŭ·¯½ºÅÍ º´·Ä 󸮴 ´ÙÀ½°ú °°Àº Áß¿äÇÑ ÀåÁ¡µéÀ» Á¦°øÇÑ´Ù: o Ŭ·¯½ºÅÍ¿¡ ÀÖ´Â °¢ ±â°èµéÀº ³ÐÀº ¹üÀ§ÀÇ ´Ù¸¥ ÄÄÇ»Æà ¾îÇÃÀ» »ç¿ëÇÒ ¼ö ÀÖ´Â ¿ÏÀüÇÑ ½Ã½ºÅÛÀÌ µÉ ¼ö ÀÖ´Ù. ±×·¡¼­ ¸¹Àº »ç¶÷µéÀÌ Å¬·¯½ºÅÍ º´·Ä ÄÄÇ»ÆÃÀº »ç¶÷µéÀÇ Ã¥»ó À§¿¡¼­ ÇÒ ÀϾøÀÌ ³î°í ÀÖ´Â ¿öÅ©½ºÅ×À̼ǵéÀÇ "¹ö·ÁÁö´Â ½Ã°£µé(wasted cycles)" ¸ðµÎ¸¦ °¡Á®´Ù ¾´´Ù°í Á¦¾ÈÇÏ°Ô µÇ¾ú´Ù. ÀÌ·± ½Ã°£µéÀ» ±¸ÇÏ´Â °ÍÀº ½ÇÁ¦ ±×·¸°Ô ½¬¿î °ÍÀÌ ¾Æ´Ï´Ù. ±×¸®°í ÀÌ°ÍÀº µ¿·áÀÇ ½ºÅ©¸° ¼¼À̹ö¸¦ ´À¸®°Ô ÇÒ °ÍÀÌ´Ù. ±×·¯³ª ÀÌ°ÍÀ» ±×·¸°Ô µÉ ¼ö ÀÖ´Ù. o ³×Æ®¿÷ ½Ã½ºÅÛµéÀÌ ÃÖ±Ù ±ÞÁõÇÏ´Â °ÍÀº Ŭ·¯½ºÅ͸¦ ¸¸µé±â À§ÇÑ Çϵå¿þ¾î ´ëºÎºÐÀÌ ´ë¿ë·®À¸·Î, ÀÌ¿¡ ´ëÀÀÇؼ­ °á°úÀûÀ¸·Î ³·Àº "»óÇ°" °¡°ÝÀ¸·Î, Æȸ®°í ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. Ŭ·¯½ºÅÍ Çϳª¿¡ ÇÑ°³ÀÇ ºñµð¿À Ä«µå, ¸ð´ÏÅÍ, Å°º¸µå°¡ ÇÊ¿äÇÏ´Â »ç½ÇÀÌ Á» ´õ ºñ¿ëÀ» ¾Æ³¥ ¼ö ÀÖµµ·Ï ÇÑ´Ù(ºñ·Ï Ãʱ⠸®´ª½º ¼³Ä¡¸¦ ¼öÇàÇÒ ¶§ Ŭ·¯½ºÅÍÀÇ °¢ ±â°èµé¿¡ À̵éÀ» ¿Å°Ü °¡¸ç ½á¾ß ÇÏÁö¸¸, ÀÏ´Ü ½ÇÇàµÇ¸é ÀüÇüÀûÀÎ ¸®´ª½º ÇǾ¾´Â "ÄܼÖ"À» ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù). ÀÌ¿Í ºñ±³Çؼ­ SMP¿Í ºÎ¼Ó ÇÁ·Î¼¼¼­´Â ÈξÀ ´õ ÀÛÀº ½ÃÀå¿¡¼­ ´ÜÀ§ ¼öÇà ¼º´É¿¡ ´ëÇÑ ´õ ³ôÀº °¡°ÝÀ» Çü¼ºÇØ°¡°í ÀÖ´Ù. o Ŭ·¯½ºÅÍ ÄÄÇ»ÆÃÀº ¾ÆÁÖ Ä¿´Ù¶õ ½Ã½ºÅÛ±îÁö Ä¿Áú ¼ö ÀÖ´Ù. ÇöÀç±îÁö 4°³ ÀÌ»óÀÇ ÇÁ·Î¼¼¼­µéÀ» °¡Áö´Â ¸®´ª½º-ȣȯ SMP¸¦ ã´Â °ÍÀÌ ¾î·Á¿î ¹Ý¸é¿¡ ÀϹÝÀûÀ¸·Î »ç¿ë °¡´ÉÇÑ ³×Æ®¿÷ Çϵå¿þ¾î´Â 16°³ ±â°èµé±îÁö Ŭ·¯½ºÅÍ·Î ½±°Ô ¹­À» ¼ö ÀÖ´Ù. Á¶±Ý¸¸ ÀÛ¾÷ÇÏ¸é ¼ö¹é°³ ¶Ç´Â ½ÉÁö¾î ¼öõ°³ ±â°èµéÀ» ³×Æ®¿÷À¸·Î ¹­À» ¼ö ÀÖ´Ù. »ç½Ç Àüü ÀÎÅͳÝÀÌ ÇϳªÀÇ Ä¿´Ù¶õ Ŭ·¯½ºÅÍ·Î º¼ ¼ö ÀÖ´Ù. o Ŭ·¯½ºÅÍ ¾È¿¡¼­ "°íÀå³­ ±â°è"¸¦ ±³Ã¼ÇÏ´Â °ÍÀÌ Æз¯Æ¼°¡ À߸øµÈ SMP¸¦ °íÄ¡´Â °Í¿¡ ºñÇؼ­ ´õ ´Ü¼øÇÏ´Ù´Â »ç½ÇÀº Á¶½É½º·´°Ô µðÀÚÀÎµÈ Å¬·¯½ºÅÍ ¼³Á¤¿¡ Á» ´õ ³ôÀº °¡¿ë¼ºÀ» Á¦°øÇÑ´Ù. ÀÌ°ÍÀº(³ôÀº °¡¿ë¼ºÀº) Áß¿äÇÑ ¼­ºñ½º Áß´ÜÀ» °ßµô ¼ö ¾ø´Â Ưº°ÇÑ ¾îÇø®ÄÉÀ̼ǵ鿡 ´ëÇؼ­ Áß¿äÇÒ »Ó¸¸ÀÌ ¾Æ´Ï°í, ´ÜÀÏ-±â°è °íÀåÀÌ ÀÚÁÖ ÀϾ´Â ÃæºÐÇÑ ÇÁ·Î¼¼½ºµéÀ» °¡Áø ½Ã½ºÅÛµéÀÇ ÀϹÝÀûÀÎ »ç¿ë¿¡µµ Áß¿äÇÏ´Ù. (¿¹¸¦ µé¾î¼­ PC °íÀåÀÇ Æò±Õ ½Ã°£ÀÌ 2³âÀÏÁö¶óµµ 32°³ ±â°è¸¦ °®´Â Ŭ·¯½ºÅÍ¿¡¼­ Àû¾îµµ ÇÑ ±â°è°¡ 6°³¿ù À̳»¿¡ °íÀ峯 È®·üÀº ²Ï ³ô´Ù.) ÁÁ´Ù. Ŭ·¯½ºÅÍ´Â ÇÁ¸®À̰ųª ½Î°í ¾ÆÁÖ Ä¿Áú ¼ö ÀÖÀ¸¸ç °¡¿ë¼ºÀÌ ³ô´Ù... ±×·¸´Ù¸é ¿Ö ¸ðµç »ç¶÷µéÀÌ Å¬·¯½ºÅ͸¦ »ç¿ëÇÏÁö ¾Ê´Â°¡? ±Û½ê °Å±â¿¡´Â ´ÙÀ½°ú °°Àº ¹®Á¦µéÀÌ Á¸ÀçÇÑ´Ù: o ¾ÆÁÖ ÀÛÀº ¿¹¿ÜµéÀ» Á¦¿ÜÇÏ°í ³×Æ®¿÷ Çϵå¿þ¾î´Â º´·Ä 󸮸¦ À§Çؼ­ °í¾ÈµÈ °ÍÀÌ ¾Æ´Ï´Ù. ÀüÇüÀûÀ¸·Î SMP¿Í ºÎ¼Ó ÇÁ·Î¼¼¼­¿¡ ºñÇؼ­ Áöü´Â ¾ÆÁÖ ³ô°í ´ë¿ªÆøÀº »ó´ëÀûÀ¸·Î ³·´Ù. ¿¹¸¦ µé¾î¼­ SMP Áöü´Â ÀϹÝÀûÀ¸·Î ¸î ¸¶ÀÌÅ©·ÎÃÊ(¿ªÀÚÁÖ: 100¸¸ºÐÀÇ 1ÃÊ)¸¦ ³ÑÁö ¾ÊÁö¸¸ Ŭ·¯½ºÅÍÀÇ °æ¿ì ÀϹÝÀûÀ¸·Î ¼ö¹é ³»Áö ¼öõ ¸¶ÀÌÅ©·Î ÃÊ°¡ °É¸°´Ù. SMP Åë½Å ´ë¿ªÆøÀº ´ë°³ 100MBytes/secÀÌ ³Ñ´Â´Ù; ºñ·Ï °¡Àå ºü¸¥ ³×Æ®¿÷ Çϵå¿þ¾î(¿¹, "±â°¡ºñÆ® ÀÌ´õ³Ý")°¡ ÀÌ¿¡ ÇÊÀûÇÒ ¼Óµµ¸¦ Á¦°øÇϱä ÇÏÁö¸¸ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â ³×Æ®¿÷Àº À̺¸´Ù 10¿¡¼­ 1000¹è Á¤µµ ´õ ´À¸®´Ù. ³×Æ®¿÷ Çϵå¿þ¾îÀÇ ¼º´ÉÀº °í¸³µÈ Ŭ·¯½ºÅÍ ³×Æ®¿÷¿¡ ÃæºÐÇÒ ¸¸Å­ ³·´Ù(The performance of network hardware is poor enough as an isolated cluster network). ³×Æ®¿÷ÀÌ ´Ù¸¥ Æ®·¡ÇÈÀ¸·ÎºÎÅÍ °í¸³µÇ¾î ÀÖÁö ¾Ê´Ù¸é, Ŭ·¯½ºÅÍ·Î µðÀÚÀÎµÈ ½Ã½ºÅÛº¸´Ù "³×Æ®¿÷À¸·Î ¹­Àº ±â°èµé"À» »ç¿ëÇÑ °æ¿ì°¡ ´õ ¸¹±â ¶§¹®¿¡ ¼º´ÉÀº ¾ÆÁÖ ¾ÇÈ­µÉ ¼ö ÀÖ´Ù. o Ŭ·¯½ºÅ͸¦ ´ÜÀÏ ½Ã½ºÅÛÀ¸·Î Ãë±ÞÇÏ´Â ¼ÒÇÁÆ®¿þ¾î Áö¿øÀº °ÅÀÇ ¾ø´Ù. ¿¹¸¦ µé¾î¼­ ps ¸í·ÉÀº ´ÜÀÏ ¸®´ª½º ½Ã½ºÅÛ¿¡ ½ÇÇà ÁßÀÎ ÇÁ·Î¼¼½ºµé¿¡ ´ëÇؼ­¸¸ º¸°íÇÒ »Ó ¸®´ª½º ½Ã½ºÅÛµé·Î ¸¸µé¾îÁø Ŭ·¯½ºÅÍ Àüü¿¡¼­ ½ÇÇà ÁßÀÎ ¸ðµç ÇÁ·Î¼¼½ºµé¿¡ ´ëÇؼ­ º¸°íÇÏÁö ¾Ê´Â´Ù. ±×·¡¼­, Ŭ·¯½ºÅÍ´Â ±²ÀåÇÑ ÀáÀç·ÂÀ» Á¦°øÇÏÁö¸¸ ÀÌ ÀáÀç·ÂÀÌ ´ëºÎºÐÀÇ ¾îÇø®ÄÉÀ̼ǵ鿡 ´ëÇؼ­ ȹµæµÇ±â¿¡´Â ¾ÆÁÖ ¾î·Á¿ï ¼ö ÀÖ´Ù. ÀÌ·± ȯ°æ¿¡ ÀûÇÕÇÑ ÇÁ·Î±×·¥µé¿¡ ´ëÇؼ­ ÁÁÀº ¼º´ÉÀ» ȹµæÇϵµ·Ï ÇÏ´Â ¸¹Àº ¼ÒÇÁÆ®¿þ¾î Áö¿øÀÌ ÀÖ´Ù´Â °Í°ú ÁÁÀº ¼º´ÉÀ» ȹµæÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¥µéÀÇ ¹üÀ§¸¦ ³ÐÈú ¼ö ÀÖµµ·Ï Ưº°È÷ ¼³°èµÈ ³×Æ®¿÷µéµµ ÀÖ´Ù´Â °ÍÀº ÁÁÀº ¼Ò½ÄÀÌ´Ù. 3.2. ³×Æ®¿÷ Çϵå¿þ¾î(Network Hardware) ÄÄÇ»ÅÍ ³×Æ®¿öÅ·Àº ±ÞÁõÇÏ°í ÀÖ´Ù... ÀÌ¹Ì ÀÌ°ÍÀ» ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ³×Æ®¿öÅ· ±â¼ú°ú Á¦Ç°µéÀÇ °è¼Ó-Áõ°¡ÇÏ´Â ¿µ¿ªÀº °³¹ßÀÌ ÁøÇà Áß¿¡ ÀÖ°í ´ëºÎºÐÀº ±â°èµé(¿¹, °¢°¢ ¸®´ª½º¸¦ µ¹¸®´Â ÇǾ¾µé)ÀÇ ±×·ì¿¡ º´·Ä-ó¸® Ŭ·¯½ºÅ͸¦ ¸¸µå´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Â ÇüÅ·Π»ç¿ë °¡´ÉÇÏ´Ù. ºÒÇàÇÏ°Ôµµ ¾î¶² ³×Æ®¿÷ ±â¼úµµ ¸ðµç ¹®Á¦µéÀ» ÈǸ¢ÇÏ°Ô Ç®Áö ¸øÇÑ´Ù; »ç½Ç Á¢±Ù, ºñ¿ë, ¼º´ÉÀÇ ¹üÀ§´Â ¾ó¸¥ ºÁ¼­ ¹Ï±â Èûµé´Ù. ¿¹¸¦ µé¾î¼­ Ç¥ÁØ »ó¾÷ÀûÀ¸·Î-°¡´ÉÇÑ Çϵå¿þ¾î¸¦ »ç¿ëÇؼ­ ³×Æ®¿÷À¸·Î ±â°èµéÀ» ¹­´Â µ¥ µå´Â ºñ¿ëÀº ±â°è ´ç Àû°Ô´Â 5´Þ·¯¿¡¼­ ¸¹°Ô´Â 4000´Þ·¯±îÁö À̸¥´Ù. Á¦Á¶ÀÚ°¡ ¸»ÇÏ´Â ´ë¿ªÆø(delivered bandwidth)¿Í Áöü ½Ã°£ °¢°¢Àº Å©±âÀÇ ³×°¡Áö µî±Þ(four orders of magnitude)¿¡ µû¶ó º¯ÇÑ´Ù. ƯÁ¤ ³×Æ®¿÷¿¡ ´ëÇؼ­ ¹è¿ì·Á°í Çϱâ ÀÌÀü¿¡ ÀÌ·± °ÍµéÀº ¹Ù¶÷ó·³ ½±°Ô º¯ÇÑ´Ù´Â °ÍÀ» ÀνÄÇÏ´Â °ÍÀÌ Áß¿äÇÏ´Ù(¸®´ª½º ³×Æ®¿öÅ· ´º½ºµé¿¡ ´ëÇؼ­´Â À» ÂüÁ¶). ±×¸®°í ¾î¶² ³×Æ®¿÷µé¿¡ ´ëÇÏ Á¤È®ÇÑ µ¥ÀÌÅ͸¦ ¾ò´Â °ÍÀº ¾ÆÁÖ ¾î·Æ´Ù. Ưº°È÷ È®½ÇÇÏÁö ¾Ê´Â °÷¿¡ ÀúÀÚ´Â ¹°À½Ç¥(?)¸¦ ³õ¾Ò´Ù. ÀÌ ÁÖÁ¦¸¦ ¿¬±¸ÇÏ´Â µ¥ ¸¹Àº ½Ã°£À» ½èÁö¸¸ ³ª´Â ³» ¿ä¾à(ÀÌ ¹®¼­)ÀÌ À߸ø Åõ¼ºÀÌ°í ¸¹Àº Áß¿äÇÑ °ÍµéÀ» »©¸Ô¾ú´Ù´Â °ÍÀ» È®½ÅÇÑ´Ù. ±³Á¤À̳ª Ãß°¡ÇØ¾ß ÇÏ´Â °ÍÀ» °®°í ÀÖ´Ù¸é pplinux@ecn.purdue.edu·Î À̸ÞÀÏÀ» º¸³»Áֱ⠹ٶõ´Ù. ¿¡ ÀÖ´Â LAN Technology Scorecard¿Í °°Àº ¿ä¾àµéÀº ¸¹Àº ¼­·Î ´Ù¸¥ ŸÀÔµéÀÇ ³×Æ®¿÷°ú LAN Ç¥Áص鿡 ´ëÇÑ Æ¯¼ºµéÀ» º¸¿©ÁØ´Ù. ±×·¯³ª ÀÌ ÇÏ¿ìÅõ¿¡ ÀÖ´Â ¿ä¾àÀº ´ëºÎºÐ ¸®´ª½º Ŭ·¯½ºÅ͸¦ ¸¸µå´Â µ¥ °ü·ÃÀÌ ÀÖ´Â ³×Æ®¿÷ Ư¼ºµé¿¡ ´ëÇؼ­ ÃÐÁ¡À» ¸ÂÃè´Ù. °¢ ³×Æ®¿÷À» ³íÀÇÇÏ´Â ¼½¼ÇÀº ªÀº Ư¼º ¸®½ºÆ®·Î ½ÃÀÛÇÑ´Ù. ´ÙÀ½Àº ÀÌ·± ¿£Æ®¸®µéÀÌ ÀǹÌÇÏ´Â ¹Ù¸¦ Á¤ÀÇÇÑ´Ù. ¸®´ª½º Áö¿ø(Linux support): (ÀÌ°Í¿¡ ´ëÇÑ) ´äº¯ÀÌ no¶ó¸é, ±× Àǹ̴ ºÐ¸íÇÏ´Ù. ´Ù¸¥ ´ë´äµéÀº ³×Æ®¿÷À» ¾ï¼¼½ºÇÏ´Â µ¥ »ç¿ëµÇ´Â ±âº» ÇÁ·Î±×·¥ ÀÎÅÍÆäÀ̽º¸¦ ¼³¸íÇÏ·Á°í ÇÒ °ÍÀÌ´Ù. ´ëºÎºÐÀÇ ³×Æ®¿÷ Çϵå¿þ¾î´Â, ÀüÇüÀûÀ¸·Î TCP/UDP Åë½ÅÀ» Áö¿øÇÏ´Â, Ä¿³Î µå¶óÀ̹ö¸¦ ÅëÇؼ­ ÀÎÅÍÆäÀ̽ºµÈ´Ù. ¾î¶² ´Ù¸¥ ³×Æ®¿÷µéÀº Ä¿³ÎÀ» °ÅÄ¡Áö ¾Ê°í¼­ Áöü ½Ã°£À» Á» ´õ ÁÙÀ̱â À§Çؼ­ Á» ´õ Á÷Á¢ÀûÀÎ ÀÎÅÍÆäÀ̽ºµé(¿¹, ¶óÀ̺귯¸®)À» »ç¿ëÇϱ⵵ ÇÑ´Ù. ¸î³âÀü OS È£ÃâÀ» ÅëÇؼ­ ºÎµ¿ ¼Ò¼ýÁ¡ À¯´ÏÆ®¸¦ ¾ï¼¼½º ÇÏ´Â °ÍÀÌ ¿ÏÀüÈ÷ ÈǸ¢ÇÑ °ÍÀ¸·Î »ý°¢µÇ¾îÁ³´Ù. ±×·¯³ª ÀÌÁ¦ ±×°ÍÀº ºÐ¸í ¿ì½º¿î °ÍÀÌ´Ù; ³» ÀÇ°ßÀ¸·Î´Â º´·Ä ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â ÇÁ·Î¼¼¼­µé °£ °¢ Åë½ÅÀÌ OS È£ÃâÀ» ¿ä±¸ÇÑ´Ù´Â °ÍÀº ¾î»öÇÑ °ÍÀÌ´Ù. ¹®Á¦´Â ÄÄÇ»Å͵éÀÌ ¾ÆÁ÷µµ ÀÌ·± Åë½Å ¸ÞÄ«´ÏÁòµéÀ» ÅëÇÕÇÏÁö ¸øÇß´Ù´Â °ÍÀÌ´Ù. ±×·¡¼­ ºñ-Ä¿³Î Á¢±ÙÀº À̽ļº ¹®Á¦µéÀ» °¡Áö´Â °æÇâÀÌ ÀÖ´Ù. ¿©·¯ºÐÀº °¡±î¿î ¹Ì·¡¿¡ ÀÌ·± °Í¿¡ ´ëÇؼ­ Á» ´õ ¸¹Àº °ÍÀ» µè°Ô µÉ °ÍÀÌ´Ù. ´ë°³ »õ·Î¿î Virtual Interface (VI) Architecture ÀÇ ÇüÅ·Πµè°Ô µÉ °ÍÀÎ µ¥ ÀÌ°ÍÀº ÀϹÝÀûÀÎ OS È£Ãâ °èÃþÀ» ÇÇÇÏ´Â ´ëºÎºÐÀÇ ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º ÀÛ¾÷µé¿¡ ´ëÇÑ Ç¥ÁØÈ­µÈ ¹æ¹ýÀÌ´Ù. VI Ç¥ÁØÀº Compaq, Intel, ±×¸®°í Microsoft¿¡ ÀÇÇؼ­ Áö¿ø¹Þ°í ÀÖÀ¸¸ç ´ÙÀ½ ¸î ³â ¾È¿¡ SAN(½Ã½ºÅÛ ¿µ¿ª ³×Æ®¿÷) µðÀÚÀο¡ ´ëÇÑ °­ÇÑ Ãæ°ÝÀÌ µÉ °ÍÀÓ¿¡ Ʋ¸²¾ø´Ù. ÃÖ´ë ´ë¿ªÆø(Maximum bandwidth): ÀÌ°ÍÀº ¸ðµç »ç¶÷ÀÌ ½Å°æ¾²´Â ¼ýÀÚÀÌ´Ù. ³ª´Â ÀϹÝÀûÀ¸·Î ÀÌ·ÐÀûÀ¸·Î ÃÖ¼±ÀÎ °æ¿ìÀÇ ¼öÄ¡¸¦ »ç¿ëÇß´Ù; ¿©·¯ºÐÀÇ ¸¶Àϸ®Áö´Â º¯ÇÒ °ÍÀÌ´Ù. ÃÖ¼Ò Áöü(Minimum latency): ³» ÀÇ°ßÀ¸·Î´Â, ÀÌ°ÍÀº ¸ðµç »ç¶÷µéÀÌ ´ë¿ªÆøº¸´Ù ´õ ½Å°æ½á¾ß ÇÒ ¼öÄ¡ÀÌ´Ù. ´Ù½Ã ³ª´Â ºñÇö½ÇÀûÀÎ ÃÖ¼±ÀÎ °æ¿ì(base-case) ¼öÄ¡¸¦ »ç¿ëÇßÁö¸¸ Àû¾îµµ ÀÌ ¼öÄ¡µéÀº Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î ¸ðµÎ¸¦ Æ÷ÇÔÇÏ´Â ¸ðµç Áöü ¼Ò½ºµéÀ» Æ÷ÇÔÇÑ´Ù. ´ëºÎºÐÀÇ °æ¿ì ³×Æ®¿÷ Áöü´Â ¸î ¸¶ÀÌÅ©·ÎÃÊÀÌ´Ù; ¼öÄ¡°¡ Å©¸é Ŭ¼ö·Ï Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍÆäÀ̽ºµéÀÇ °èÃþµéÀÌ ºñÈ¿À²ÀûÀÌ´Ù´Â °ÍÀ» ¹Ý¿µÇÑ´Ù. ±¸ÀÔ ¹æ¹ý(Available as): ´Ü¼øÇÏ°Ô ¸»Çؼ­, ÀÌ°ÍÀº ÀÌ Å¸ÀÔÀÇ ³×Æ®¿÷ Çϵå¿þ¾î¸¦ °®Ãâ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¼³¸íÇÑ´Ù. »óÇ°µéÀº ÁÖ¿ä ±¸ºÐ ÀÎÀÚ·Î °¡°ÝÀ» °¡Áö¸é¼­, ¸¹Àº º¥´õµé¿¡ ÀÇÇؼ­ »ì ¼ö ÀÖ´Ù. ´Ù¼ö-º¥´õ¿¡ ÀÇÇÑ °ÍµéÀº ÇϳªÀÇ °æÀïÀûÀÎ º¥´õº¸´Ù Á» ´õ »ç±â ½±Áö¸¸ À̵éÀº Áß¿äÇÑ Â÷ÀÌ¿Í ÀáÀçÀûÀΠȣȯ¼º(interoperability) ¹®Á¦µéÀÌ ÀÖ´Ù. ´ÜÀÏ-º¥´õ ³×Æ®¿÷Àº °ø±ÞÀÚÀÇ ¼Õ¿¡ ¿ÏÀüÈ÷ Á¾¼ÓµÈ´Ù(±×·¯³ª ±×µéÀº ģöÇÒ ¼öµµ ÀÖ´Ù). ÆÛºí¸¯ µµ¸ÞÀÎ µðÀÚÀÎÀ̶õ ±×°ÍÀ» ¿©·¯ºÐ¿¡°Ô ÆÈ »ç¶÷À» ãÁö ¸øÇÏ´õ¶óµµ ºÎÇ°µéÀ» »ç¼­ ±×°ÍÀ» ¸¸µé ¼ö ÀÖ´Ù´Â °ÍÀ» ¸»ÇÑ´Ù. ¿¬±¸ ÇÁ·ÎÅäŸÀÔµéÀº ¸» ±×´ë·ÎÀÌ´Ù; ±×µéÀº ÀϹÝÀûÀ¸·Î ÀϹÝÀûÀ¸·Î ¿ÜºÎ »ç¿ëÀڵ鿡°Ô ÁغñµÈ °ÍÀÌ ¾Æ´Ï°Å³ª ±×µéÀÌ »ì ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Ï´Ù. »ç¿ëµÈ ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º(Interface port/bus used): ÀÌ ³×Æ®¿÷À» ¾î¶»°Ô Á¢¼Ó(hook-up)ÇÒ °ÍÀΰ¡? ÇöÀç °¡Àå ³ôÀº ¼º´É°ú °¡Àå ÀϹÝÀûÀÎ °ÍÀº PCI ¹ö½º ÀÎÅÍÆäÀ̽º Ä«µåÀÌ´Ù. EISA, VESA ·ÎÄà ¹ö½º(VL ¹ö½º), ±×¸®°í ISA ¹ö½º Ä«µåµéµµ ÀÖ´Ù. ISA´Â ¸ÇóÀ½¿¡ ³ª¿Â °ÍÀÌ°í ¾ÆÁ÷µµ ³·Àº-¼º´ÉÀÇ Ä«µåµé¿¡ ´ëÇؼ­ ¸¹ÀÌ »ç¿ëµÇ´Â °ÍÀÌ´Ù. EISA´Â ¸¹Àº PCI ±â°èµé¿¡¼­ µÎ¹ø° ¹ö½º·Î »ç¿ëµÇ°í À־ ¸î°¡Áö Ä«µåµéÀÌ ÀÖ´Ù. ¿À´Ã³¯ VL ¹°°ÇµéÀ» ¸¹ÀÌ º¼ ¼ö ¾øÀ» °ÍÀÌ´Ù(ºñ·Ï °¡ ÀÇ°ßÀ» ´Þ¸®ÇÏÁö¸¸ ¸»ÀÌ´Ù). ¹°·Ð ¿©·¯ºÐÀÇ ÇǾ¾ÀÇ ÄÉÀ̽º¸¦ Çѹøµµ ¿­¾îº¸Áö ¾Ê°í »ç¿ëÇÒ ¼ö ÀÖ´Â ¾î¶² ÀÎÅÍÆäÀ̽º´Â ÀÛÀº ¸Å·Â ÀÌ»ó °¡Áø´Ù. IrDA¿Í USB ÀÎÅÍÆäÀ̽ºµéÀº °è¼Ó ºó¹øÇÏ°Ô ³ªÅ¸³ª°í ÀÖ´Ù. Ç¥ÁØ Æз¯·² Æ÷Æ®(SPP)´Â ÇÁ¸°Å͸¦ ºÙÀÌ´Â µ¥ »ç¿ëµÇÁö¸¸ ISA ¹ö½ºÀÇ ¿ÜºÎ È®ÀåÀ¸·Î½á ¸¹ÀÌ »ç¿ëµÇ¾î ¿Ô´Ù; ÀÌ »õ·Î¿î ±â´ÉÀº EPP¿Í ECP °³¼±À» ±ÔÁ¤ÇÑ IEEE 1284 Ç¥ÁØ¿¡ ÀÇÇؼ­ ÁõÁøµÇ¾ú´Ù. ¶ÇÇÑ ¿À·¡µÇ°í ½Å·Ú¼º ÀÖÁö¸¸ ´À¸° RS232 ½Ã¸®¾ó Æ÷Æ®°¡ ÀÖ´Ù. ³ª´Â VGA ºñµð¿À Ä¿³ØÅÍ, Å°º¸µå, ¸¶¿ì½º, ¶Ç´Â °ÔÀÓ Æ÷Æ®µéÀ» »ç¿ëÇؼ­ ±â°èµéÀ» ¿¬°áÇÏ´Â °ÍÀ» ¾ËÁö ¸øÇÑ´Ù... ±×·¡¼­ ¿©±â¿¡ ¾ø´Ù. ³×Æ®¿÷ ±¸Á¶(Network structure): ¹ö½º´Â ±¸¸® ¼±À̰ųª ±¸¸® ¼±µéÀÇ ¸ðÀÓÀ̰ųª ±¤¼¶À¯ÀÌ´Ù. Çãºê´Â ¿©±â¿¡ ²ÅÇô ÀÖ´Â ¼­·Î ´Ù¸¥ ±¸¸®¼±/±¤¼¶À¯µéÀ» ¿¬°áÇÏ´Â ¹æ¹ýÀ» ¾Ë°í ÀÖ´Â ÀÛÀº ¹Ú½ºÀÌ´Ù; ½ºÀ§Äª Çãºê(switched hub)´Â ´Ù¼ö Ä¿³Ø¼ÇµéÀÌ µ¿½Ã¿¡ µ¥ÀÌÅ͸¦ Àü¼ÛÇϵµ·Ï ÇÏ´Â ÇãºêÀÌ´Ù. ±â°è´ç ºñ¿ë(Cost per machine connected): ¿©±â¼­ ÀÌ·± ¼öÄ¡µéÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¸»ÇÑ´Ù. ³×Æ®¿÷ Ä¿³Ø¼ÇÀ» ¼¼Áö ¾Ê°í¼­ Ŭ·¯½ºÅÍÀÇ ÇÑ ³ëµå¿¡ ¾µ·Á°í ÇǾ¾¸¦ »ç´Â µ¥ 2000´Þ·¯°¡ µé¾ú´Ù°í °¡Á¤Çغ¸ÀÚ. ÆнºÆ® ÀÌ´õ³Ý(Fast Ethernet)À» ´õÇÏ´Â °ÍÀº ³ëµå´ç ¾à 2400´Þ·¯°¡ µç´Ù; MyrinetÀ» ´ë½Å ´õÇÏ´Â µ¥¿¡´Â ¾à 3800´Þ·¯°¡ µç´Ù. 2¸¸´Þ·¯°¡ ÀÖ´Ù¸é Fast Ethernet¿¡ ¿¬°áµÈ 8°³ÀÇ ±â°è³ª Myrinet¿¡ ¿¬°áµ· 5°³ÀÇ ±â°è¸¦ °¡Áú ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¸ÖƼ ³×Æ®¿÷À» °¡Áö´Â °Íµµ ¾ÆÁÖ ÀǹÌÀÖÀ» ¼ö ÀÖ´Ù; ¿¹, $20,000·Î ÆнºÆ® ÀÌ´õ³Ý°ú TTL_PAPERS µÑ ´Ù °¡Áö´Â 8°³ ±â°èµéÀ» ±¸¸ÅÇÒ ¼ö ÀÖ´Ù. ¾îÇø®ÄÉÀ̼ÇÀ» °¡Àå »¡¸® ½ÇÇàÇÒ Å¬·¯½ºÅ͸¦ ¸¸µé °¡´É¼ºÀÌ °¡Àå ³ôÀº ³×Æ®¿÷À̳ª ³×Æ®¿÷ ÁýÇÕÀ» ¼±ÅÃÇÏÀÚ. ÀÌ°ÍÀ» Àд ÇöÀç ÀÌ·± ¼öÄ¡µéÀº Ʋ¸± ¼öµµ ÀÖ´Ù... Á¦±â·² ±×µéÀº ¾Æ¸¶µµ ÀÌ¹Ì Æ²·ÈÀ» °ÍÀÌ´Ù. ¶ÇÇÑ ¾çÀÌ ÁÙ¾îµé°Å³ª Ưº° ÆǸÅ(special deal)µîÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. ±×·¯³ª ¿©±â¼­ ¾ð±ÞµÈ °¡°Ýµé¶§¹®¿¡ ¿©·¯ºÐÀÌ ¾ÆÁÖ ºÎÀûÀýÇÑ ¼±ÅÃÀ» ÇÏ°Ô²û Çϱ⿡ ÃæºÐÇÑ À߸øµÈ °ÍÀÏ °¡´É¼ºÀÌ Àû´Ù. ¿©·¯ºÐÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ ³×Æ®¿÷ÀÇ Æ¯º°ÇÑ ¼Ó¼ºÀ» ¿ä±¸Çϰųª Ŭ·¯½ºÅ͸µµÈ ÇǾ¾µéÀÌ »ó´ëÀûÀ¸·Î ºñ½Ñ °ÍÀÏ ¶§¿¡¸¸ ºñ½Ñ ³×Æ®¿÷ÀÌ Àǹ̰¡ ÀÖ´Ù´Â °ÍÀ» ¾Æ´Â µ¥´Â ¹Ú»ç ÇÐÀ§(ºñ·Ï ³ª´Â Çϳª °¡Áö°í ÀÖÁö¸¸ ;-)°¡ ÇÊ¿ä ¾ø´Ù. ³» ÀÇ°ßÀ» µé¾úÀ¸¹Ç·Î ¼î¿Í ÇÔ²² ´ÙÀ½¿¡....(Now that you have the disclaimers, on with the show....) 3.2.1. ¾ÆÅ©³Ý(ArcNet) o ¸®´ª½º Áö¿ø: Ä¿³Î µå¶óÀ̹ö o ÃÖ´ë ´ë¿ªÆø: 2.5 Mb/s o ÃÖ¼Ò Áöü: 1,000 microseconds? o ±¸ÀÔ ¹æ¹ý: ¸ÖƼ-º¥ÅÍ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: ISA o ³×Æ®¿÷ ±¸Á¶: ½ºÀ§Ä¡µÇÁö ¾Ê´Â(unswitched) Çãºê³ª ¹ö½º(³í¸®ÀûÀÎ ¸µ) o ±â°è´ç ºñ¿ë: $200 ARCNETÀº ÁÖ·Î ³»Àå ½Ç½Ã°£ Á¦¾î ½Ã½ºÅ۵鿡¼­ »ç¿ëµÇ±â À§Çؼ­ °í¾ÈµÈ Áö¿ª ³×Æ®¿÷(LAN)ÀÌ´Ù. ÀÌ´õ³Ý°ú ºñ½ÁÇÏ°Ô ³×Æ®¿÷Àº ¹°¸®ÀûÀ¸·Î ¹ö½º¿¡ ºÙÀÎ ÅÇÀ̳ª Çϳª ÀÌ»óÀÇ Çãºêµé·Î Á¶Á÷µÈ´Ù. ±×·¯³ª ÀÌ´õ³Ý°ú ´Ù¸£°Ô ÀÌ°ÍÀº ³×Æ®¿÷À» ³í¸®ÀûÀ¸·Î ¸µÀ¸·Î ±¸ÃàÇÏ´Â ÅäÅ«-±â¹Ý ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÑ´Ù. ÆÐŶ Çì´õ´Â ÀÛ´Ù(3 ¶Ç´Â 4¹ÙÀÌÆ®). ±×¸®°í ¸Þ½ÃÁöµéÀº ´ÜÀÏ ¹ÙÀÌÆ® µ¥ÀÌÅ͸¸Å­ ÀÛ°Ô Àü´ÞµÉ ¼ö ÀÖ´Ù. ±×·¡¼­, ARCNETÀº Á¦ÇÑµÈ Áö¿¬ µîÀ» °¡Áö¸é¼­, ÀÌ´õ³Ýº¸´Ù Á» ´õ ÀÏ°üµÈ ¼º´ÉÀ» °¡Áø´Ù. ºÒÇàÇÏ°Ôµµ ÀÌ°ÍÀº ÀÌ´õ³Ýº¸´Ù ´õ ´À¸®°í ´ú À¯¸íÇÏ´Ù. ±×·¯¸é¼­µµ ´õ ºñ½Î´Ù. ¿¡ ÀÖ´Â ARCNET Trade Association·ÎºÎÅÍ ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù. 3.2.2. ATM o ¸®´ª½º Áö¿ø: Ä¿³Î µå¶óÀ̹ö, AAL* ¶óÀ̺귯¸®. o ÃÖ´ë ´ë¿ªÆø: 155 Mb/s (°ð, 1,200 Mb/s) o ÃÖ¼Ò Áöü: 120 microseconds o ±¸¸Å ¹æ¹ý: ¸ÖƼ-º¥´õ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: PCI o ³×Æ®¿÷ ±¸Á¶: ½ºÀ§Ä¡ Çãºê o ±â°è ´ç ºñ¿ë: $3,000 Áö³­ ¸î³â µ¿¾È È¥¼ö »óÅ¿¡ ÀÖÁö ¾Ê¾Ò´Ù¸é ¾Æ¸¶ ATM(ºñµ¿±â Àü¼Û ¸ðµå)°¡ ¾î¶»°Ô ¹Ì·¡°¡.. ±Û½ê, ÀÏÁ¾ÀÇ ¹Ì·¡°¡ µÉ ¼ö ÀÖ´ÂÁö¿¡ ´ëÇؼ­ ¸¹ÀÌ µé¾úÀ» °ÍÀÌ´Ù. ATMÀº HiPPIº¸´Ù ´õ ½Î°í ÆнºÆ® ÀÌ´õ³Ýº¸´Ù ´õ ºü¸£¸ç ÀüÈ­ ȸ»çµéÀÌ Á¦°øÇÏ´Â °Å¸®¸¸Å­ ±ä °Å¸®¿¡µµ »ç¿ëµÉ ¼ö ÀÖ´Ù. ATM ³×Æ®¿÷ ÇÁ·ÎÅäÄÝÀº ¶ÇÇÑ ´õ ³·Àº-¿À¹öÇìµå ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇϵµ·Ï, ±×¸®°í ÀÛÀº ¸Þ½ÃÁöµé°ú ½Ç½Ã°£ Åë½Å(¿¹, µðÁöÅÐ ¿Àµð¿À¿Í ºñµð¿À)À» Á» ´õ È¿°úÀûÀ¸·Î °ü¸®Çϵµ·Ï °í¾ÈµÇ¾ú´Ù. ÀÌ°ÍÀº ¶ÇÇÑ ¸®´ª½º°¡ ÇöÀç Áö¿øÇÏ´Â °¡Àå-³ôÀº ´ë¿ªÆø ³×Æ®¿÷µé ÁßÀÇ ÇϳªÀÌ´Ù. ³ª»Û ¼Ò½ÄÀº ATMÀº ½ÎÁö ¾Ê°í º¥´õµé °£¿¡ ȣȯ¼º ¹®Á¦°¡ ¾ÆÁ÷ ÀÖ´Ù´Â °ÍÀÌ´Ù. ¸®´ª½º ATM °³¹ß¿¡ ´ëÇÑ °³°üÀº ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. 3.2.3. CAPERS o ¸®´ª½º Áö¿ø: AFAPI ¶óÀ̺귯¸® o ÃÖ´ë ´ë¿ªÆø: 1.2 Mb/s o ÃÖ¼Ò Áöü: 3 microseconds o ±¸¸Å ¹æ¹ý: »óÇ° Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: SPP o ³×Æ®¿÷ ±¸Á¶: 2°³ÀÇ ±â°èµé °£ ÄÉÀ̺í o ±â°è´ç ºñ¿ë: $2 CAPERS(º´·Ä ½ÇÇà°ú ºü¸¥ µ¿±â¸¦ À§ÇÑ ÄÉÀÌºí ¾î´ðÅÍ; Cable Adapter for Parallel Execution and Rapid Synchronization)´Â, Àü±â ÄÄÇ»ÅÍ ¿£Áö´Ï¾î¸µÀÇ ÆÛµà ´ëÇÐ Çб³(Purdue University School of Electrical and Computer Engineering)¿¡¼­ÀÇ PAPERS ÇÁ·ÎÁ§Æ® ÀÇ ºÎ»ê¹°ÀÌ´Ù. ±âº»ÀûÀ¸·Î ÀÌ°ÍÀº µÎ ¸®´ª½º ÇǾ¾µé¿¡ ´ëÇÑ PAPERS ¶óÀ̺귯¸®¸¦ ±¸ÇöÇϱâ À§Çؼ­, ÀÏ¹Ý "LapLink" SPP-to-SPP ÄÉÀ̺íÀ» »ç¿ëÇϱâ À§Çؼ­ ¼ÒÇÁÆ®¿þ¾î ÇÁ·ÎÅäÄÝÀ» Á¤ÀÇÇÑ´Ù. ¾ÆÀ̵ð¾î´Â ±ïÀÌÁö ¾ÊÁö¸¸ °¡°ÝÀ» ´õ ³·Ãâ ¼ö´Â ¾ø´Ù(¿ªÀÚÁÖ: ±×¸¸Å­ ½Î´Ù?). ½Ã½ºÅÛ º¸¾ÈÀ» °³¼±Çϱâ À§Çؼ­ TTL_PAPERS¿Í ¸¶Âù°¡Áö·Î ±Ç°íµÇ´Â ¸¶ÀÌ³Ê Ä¿³Î ÆÐÄ¡°¡ ÀÖ´Ù. ±×·¯³ª ¹Ýµå½Ã ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï´Ù: . 3.2.4. ÀÌ´õ³Ý(Ethernet) o ¸®´ª½º Áö¿ø: Ä¿³Î µå¶óÀ̹ö o ÃÖ´ë ´ë¿ªÆø: 10 Mb/s o ÃÖ¼Ò Áöü: 100 ¸¶ÀÌÅ©·ÎÃÊ o ±¸¸Å ¹æ¹ý: »óÇ° Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: PCI o ³×Æ®¿÷ ±¸Á¶: ½ºÀ§Ä¡ ¶Ç´Â ½ºÀ§Ä¡ ¾ø´Â Çãºê, ¶Ç´Â Çãºê ¾ø´Â ¹ö½º o ±â°è´ç ºñ¿ë: $100(Çãºê ¾ø´Â °æ¿ì $50) ¸î³âµ¿¾È 10 Mbits/s ÀÌ´õ³ÝÀº Ç¥ÁØ ³×Æ®¿÷ ±â¼úÀÌ µÇ¾ú´Ù. ÁÁÀº ÀÌ´õ³Ý ÀÎÅÍÆäÀ̽º Ä«µåµéÀº $50 ÀÌÇÏ·Î »ì ¼ö ÀÖ´Ù. ²Ï ¸¹Àº ÇǾ¾µéÀÌ ÀÌÁ¦´Â ¸¶´õº¸µå¿¡ ÀÌ´õ³Ý ÄÁÆ®·Ñ·¯¸¦ °¡Áö°í ÀÖ´Ù. °¡º±°Ô-»ç¿ëµÇ´Â ³×Æ®¿÷¿¡ ´ëÇؼ­ ÀÌ´õ³Ý ¿¬°áÀº Çãºê ¾ø´Â ¸ÖƼ-ÅÇ ¹ö½º·Î Á¶Á÷µÉ ¼ö ÀÖ´Ù; ±×·± ¼³Á¤Àº ÃÖ¼ÒÀÇ ºñ¿ëÀ¸·Î 200°³±îÁöÀÇ ±â°èµéÀ» ¹­À» ¼ö ÀÖ´Ù. ±×·¯³ª º´·Ä 󸮿¡´Â ÀûÀýÇÏÁö ¾Ê´Ù. ´õºñ Çãºê(unswitched hub)¸¦ ´õÇÏ´Â °ÍÀº ½ÇÁ¦ ¼º´É Çâ»ó¿¡ µµ¿òÀÌ µÇÁö ¾Ê´Â´Ù. ±×·¯³ª µ¿½Ã ¿¬°áµé¿¡ ´ëÇؼ­ Àüü ´ë¿ªÆøÀ» Á¦°øÇÒ ¼ö ÀÖ´Â ½ºÀ§Ä¡ Çãºê(switched hub)µéÀº Æ÷Æ®´ç ´ÜÁö ¾à $100¸¸ µç´Ù. ¸®´ª½º´Â ³î¶ó¿ï Á¤µµ·Î ¸¹Àº ÀÌ´õ³Ý ÀÎÅÍÆäÀ̽ºµéÀ» Áö¿øÇÏÁö¸¸ ÀÎÅÍÆäÀ̽º Çϵå¿þ¾îÀÇ º¯Á¾µéÀº ½É°¢ÇÑ ¼º´É Â÷À̸¦ ºÎ¸¦ ¼ö ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇÏ´Â °ÍÀÌ Áß¿äÇÏ´Ù. ¾î¶² °ÍµéÀÌ Áö¿øµÇ´ÂÁö¿Í ±×µéÀÌ Àß ÀÛµ¿ÇÏ´ÂÁö¿¡ ´ëÇؼ­ Çϵå¿þ¾î ȣȯ¼º ÇÏ¿ìÅõ(Hardware Compatibility HOWTO)¸¦ º¸¶ó; ±×¸®°í ´ÙÀ½À» º¸ÀÚ . ¼º´ÉÀ» Çâ»óÇÏ´Â Èï¹Ì·Î¿î ¹æ¹ýÀº NASA CESDIS¿¡¼­ ¼öÇàµÈ ºñ¿À¿ïÇÁ(Beowulf) ÇÁ·ÎÁ§Æ® ¿¡¼­ ¼öÇàµÈ 16-±â°è ¸®´ª½º Ŭ·¯½ºÅÍ¿¡ ÀÇÇؼ­ Á¦¾ÈµÇ¾ú´Ù. ¸¹Àº ÀÌ´õ³Ý Ä«µå µå¶óÀ̹öÀÇ ÀúÀÚÀÎ Donald Becker´Â °¢ÀÚ ´Ù¸¥ °ÍÀ» shadowÇÏ´Â(Áï, µ¿ÀÏÇÑ ³×Æ®¿÷ ÁÖ¼ÒµéÀ» °øÀ¯ÇÏ´Â) ´Ù¼öÀÇ ÀÌ´õ³Ý ³×Æ®¿÷À» ÅëÇؼ­ ·Îµå °øÀ¯(load sharing)ÇÏ´Â Áö¿øÀ» °³¹ßÇÏ¿´´Ù. ÀÌ ·Îµå °øÀ¯´Â Ç¥ÁØ ¸®´ª½º ¹èÆ÷ÆÇ¿¡ ³»ÀåµÇ°Ô µÇ¾ú°í ¼ÒÄÏ ÀÛ¾÷ ·¹º§ ¾Æ·¡¿¡ º¸ÀÌÁö ¾Ê°Ô ³»ÀåµÇ°Ô µÇ¾ú´Ù. Çãºê ºñ¿ëÀÌ Áß¿äÇϱ⠶§¹®¿¡ °¢ ±â°è°¡ Çãºê ¾ø´Â ¶Ç´Â ´õ¹Ì Çãºê¸¦ °¡Áø µÎ °³ ÀÌ»óÀÇ ÀÌ´õ³Ý ³×Æ®¿÷ (¿ªÀÚÁÖ: Ä«µå)¿¡ ¿¬°áÇÏ´Â °ÍÀº ¼º´ÉÀ» °³¼±Çϱâ À§ÇÑ ºñ¿ë-È¿°úÀûÀÎ ¹æ¹ýÀÌ µÉ ¼ö ÀÖ´Ù. »ç½Ç ÇÑ ±â°è°¡ ³×Æ®¿÷ ¼º´É º´¸ñ¿¡ °É¸° »óȲ¿¡¼­ shadow ³×Æ®¿÷À» »ç¿ëÇÏ´Â ·Îµå °øÀ¯´Â ´ÜÀÏ ½ºÀ§Ä¡ Çãºê ³×Æ®¿÷À» »ç¿ëÇÏ´Â °Íº¸´Ù ÈξÀ ´õ ÁÁ´Ù. 3.2.5. ÀÌ´õ³Ý(ÆнºÆ® ÀÌ´õ³Ý, Fast Ethernet) o ¸®´ª½º Áö¿ø: Ä¿³Î µå¶óÀ̹ö. o ÃÖ´ë ´ë¿ªÆø: 100 Mb/s o ÃÖ¼Ò Áöü: 80 ¸¶ÀÌÅ©·Î ÃÊ o ±¸¸Å ¹æ¹ý: »óÇ° Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: PCI o ³×Æ®¿÷ ±¸Á¶: ½ºÀ§Ä¡ ¶Ç´Â ´õ¹Ì Çãºê o ±â°è´ç ºñ¿ë: $400? ºñ·Ï ±×µéÀ» "ÆнºÆ® ÀÌ´õ³Ý"À¸·Î ºÎ¸£´Â ¸î°¡Áö ´Ù¸¥ ±â¼úµéÀÌ ½ÇÁ¦ Á¸ÀçÇÏÁö¸¸ ÀÌ ¿ë¾î´Â ´ë°³ ¿¾³¯ "10 BaseT" 100 Mbits/s Àåºñ¿Í ÄÉÀ̺íµé°ú ´Ù¼Ò ȣȯµÇ´Â Çãºê-±â¹Ý 100Mbits/s ÀÌ´õ³ÝÀ» °¡¸®Å²´Ù. ±â´ëÇÏ´Â °Íó·³ ÀÌ´õ³ÝÀ¸·Î ºÒ¸®´Â °ÍµéÀº ¾î¶² °ÍÀ̳ª ÀϹÝÀûÀ¸·Î ¿ë·®À¸·Î °¡°ÝÀÌ ¸Å°ÜÁö°í ÀÌ·± ÀÎÅÍÆäÀ̽ºµéÀº ÀϹÝÀûÀ¸·Î 155 Mbits/s ATM Ä«µåµéÀÇ °¡°Ý¿¡ Àڱ׸¶ÇÑ Á¶°¢¿¡ Áö³ªÁö ¾Ê´Â´Ù. ÀÏ´ÜÀÇ ±â°èµéÀÌ ´ÜÀÏ 100 Mbits/s "¹ö½º" (´õ¹Ì Çãºê¸¦ »ç¿ëÇؼ­)ÀÇ ´ë¿ªÆøÀ» ³ª´² ¾²µµ·Ï ÇÏ´Â °ÍÀº °¢ ±â°èÀÇ ¿¬°á¿¡ Ç®·Î 10 Mbits/s¸¦ Á¦°øÇÒ ¼ö ÀÖ´Â ½ºÀ§Ä¡ Çãºê¸¦ °¡Áö°í 10 Mbits/s ÀÌ´õ³ÝÀ» »ç¿ëÇÏ´Â °Íº¸´Ù ÁÁÁö ¾ÊÀ» ¼ö ÀÖ´Ù´Â ÇÔÁ¤(´ÜÁ¡)ÀÌ ÀÖ´Ù. °¢ ±â°è¿¡°Ô µ¿½Ã¿¡ 100 Mbits/s¸¦ Á¦°øÇÒ ¼ö ÀÖ´Â ½ºÀ§Ä¡ Çãºê´Â ºñ½ÎÁö¸¸ °¡°ÝÀÌ ¸ÅÀÏ ¶³¾îÁö°í ÀÖ°í ÀÌ·± ½ºÀ§Ä¡µéÀº ´õ¹Ì Çãºêº¸´Ù ÈξÀ ´õ ³ôÀº Àüü ³×Æ®¿÷ ´ë¿ªÆøÀ» ¸¸µç´Ù. ATM ½ºÀ§Ä¡µéÀ» ºñ½Î°Ô ¸¸µå´Â ¿äÀÎÀº ±×µéÀÌ °¢ ATM ¼¿(»ó´ëÀûÀ¸·Î ÀÛÀº)µé¿¡ ´ëÇؼ­ ¹Ýµå½Ã ½ºÀ§Ä¡ÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù; ¾î¶² ÆнºÆ® ÀÌ´õ³Ý ½ºÀ§Ä¡µéÀº ½ºÀ§Ä¡¸¦ Áö³¯ ¶§ ÀÛÀº Áöü¸¦ °¡Áú ¼ö ÀÖ´Â ±â¼úµéÀ» »ç¿ëÇÔÀ¸·Î½á ±â´ëµÇ´Â ´õ ³·Àº ½ºÀ§Äª ÁÖ±âÀÇ ÀÌÁ¡À» ÀÌ¿ëÇÑ´Ù. ±×·¯³ª ½ºÀ§Ä¡ Æнº¸¦ º¯°æÇÏ´Â µ¥ ¸î ¹Ð¸®ÃÊ(¿ªÀÚÁÖ: ¸¶ÀÌÅ©·Î ÃÊ°¡ ¾Æ´Ï´Ù)°¡ °É¸°´Ù... ±×·¡¼­ ¶ó¿ìÆà ÆÐÅÏÀÌ ÀÚÁÖ º¯ÇÑ´Ù¸é ÀÌ·± ½ºÀ§Ä¡´Â ÇÇÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¿©·¯ Ä«µåµé°ú µå¶óÀ̹öµé¿¡ ´ëÇؼ­´Â ¸¦ º¸¶ó. ¶ÇÇÑ ÀÌ´õ³Ý¿¡¼­ ¼³¸íÇÑ °Íó·³ NASA¿¡¼­ ÀÌ·ïÁø Beowulf ÇÁ·ÎÁ§Æ® °¡ ¸ÖƼ ÆнºÆ® ÀÌ´õ³ÝÀ» ÅëÇؼ­ ·Îµå °øÀ¯ÇÔÀ¸·Î½á ¼º´ÉÀ» °³¼±ÇÑ Áö¿øÀ» °³¹ßÇØ¿À°í ÀÖ´Ù´Ï Âü°í ¹Ù¶õ´Ù. 3.2.6. ÀÌ´õ³Ý(±â°¡ºñÆ® ÀÌ´õ³Ý,Gigabit Ethernet) o ¸®´ª½º Áö¿ø: Ä¿³Î µå¶óÀ̹ö o ÃÖ´ë ´ë¿ªÆø: 1,000 Mb/s o ÃÖ¼Ò Áöü: 300 ¸¶ÀÌÅ©·Î ÃÊ? o ±¸¸Å ¹æ¹ý: ¸ÖƼ-º¥´õ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: PCI o ³×Æ®¿÷ ±¸Á¶: ½ºÀ§Ä¡ Çãºê ¶Ç´Â FDR o ±â°è´ç ºñ¿ë: $2,500? ±â°¡ºñÆ® ÀÌ´õ³Ý(Gigabit Ethernet) ÀÌ ÀÌ´õ³ÝÀ¸·Î ºÒ¸®´Â ÁÁÀº ±â¼úÀû ÀÌÀ¯¸¦ °¡Áø´Ù°í È®½ÅÇÏÁö ¸øÇÑ´Ù. ±×·¯³ª ÀÌ°ÍÀÌ ½Î°í Å« ½ÃÀåÀÌ ÀÖ°í IP¸¦ Áö¿øÇÏ´Â ÄÄÇ»ÅÍ ³×Æ®¿÷ ±â¼úÀ» °®°í ÀÖ´Ù´Â °ÍÀ» À̸§ÀÌ Á¤È®ÇÏ°Ô ÀǹÌÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ±×·¯³ª ÇöÀç °¡°ÝÀº Gb/s Çϵå¿þ¾î°¡ ¾ÆÁ÷ ¸¸µé±â¿¡ ±î´Ù·Î¿î °ÍÀ̶ó´Â »ç½ÇÀ» ¹Ý¿µÇÑ´Ù. ´Ù¸¥ ÀÌ´õ³Ý ±â¼úµé°ú´Â ´Ù¸£°Ô ±â°¡ºñÆ® ÀÌ´õ³ÝÀº Á» ´õ ¹ÏÀ» ¼ö ÀÖ´Â ³×Æ®¿÷À» ¸¸µå´Â È帧 Á¦¾îÀÇ ·¹º§À» Á¦°øÇÑ´Ù. FDR, Áï Ç®-µàÇ÷º½º ¸®ÇÇÅÍ(Full-Duplex Repeater)´Â ¼º´ÉÀ» Çâ»ó½ÃÅ°±â À§Çؼ­ ¹öÆÛ¸µ°ú Áö¿ªÈ­µÈ È帧 Á¦¾î¸¦ »ç¿ëÇϸ鼭, ´Ü¼øÇÏ°Ô ¶óÀεéÀ» ¸ÖƼÇ÷º½ºÇÑ´Ù. ´ëºÎºÐÀÇ ½ºÀ§Ä¡ ÇãºêµéÀº ÇöÁ¸ÇÏ´Â ±â°¡ºñÆ®-°¡´É ±¤¼¶À¯ ½ºÀ§Ä¡(gigabit- capable switch fabrics)¿¡ ´ëÇÑ »õ·Î¿î ÀÎÅÍÆäÀ̽º ¸ðµâµé·Î½á ±¸ÃàµÇ°í ÀÖ´Ù. ½ºÀ§Ä¡/FDR Á¦Ç°µéÀº Àû¾îµµ ´ÙÀ½°ú °°Àº »çÀÌÆ®µé¿¡¼­ ±¸¸ÅµÉ ¼ö Àְųª ¹ßÇ¥µÇ°í ÀÖ´Ù. , , , , , , , . , , , and . ¸®´ª½º µå¶óÀ̹ö °¡ Á¸ÀçÇϸç Packet Engines "Yellowfin" G-NIC¿¡ ´ëÇؼ­´Â . ¸®´ª½º¿¡¼­ ÇÑ Ãʱâ Å×½ºÆ®´Â °¡Àå ÁÁÀº 100 Mb/s ÆнºÆ® ÀÌ´õ³ÝÀ¸·Î ȹµæµÉ ¼ö ÀÖ´Â °Íº¸´Ù ¾à 2.5¹è ³ôÀº ´ë¿ªÆøÀ» ¾ò¾ú´Ù; ±â°¡ºñÆ® ³×Æ®¿÷ÀÇ °æ¿ìPCI ¹ö½º »ç¿ëÀ» Á¶½É½º·´°Ô Æ©´×ÇÏ´Â °ÍÀÌ Áß¿äÇÑ ÀÎÀÚÀÌ´Ù. ÀǽÉÇÒ ¹Ù ¾øÀÌ µå¶óÀ̹ö °³¼±°ú ´Ù¸¥ NICµé¿¡ ´ëÇÑ ¸®´ª½º µå¶óÀ̹ö Áö¿øÀÌ °è¼Ó À̾îÁú °ÍÀÌ´Ù. 3.2.7. FC (±¤¼¶À¯ ä³Î, Fibre Channel) o ¸®´ª½º Áö¿ø: no o ÃÖ´ë ´ë¿ªÆø: 1,062 Mb/s o ÃÖ¼Ò Áöü: ? o ±¸¸Å °æ·Î: ¸ÖƼ-º¥´õ Çϵå¿þ¾î o ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: PCI? o ³×Æ®¿÷ ±¸Á¶: ? o ±â°è ´ç °¡°Ý: ? FC(±¤¼¶À¯ ä³Î)ÀÇ ¸ñÀûÀº ³ôÀº-¼º´É ºí·° I/O(2,048 ¹ÙÀÌÆ® µ¥ÀÌÅÍ ÇÏÁßÀ» ½Ç¾î³ª¸£´Â FC ÇÁ·¹ÀÓ)¸¦ Á¦°øÇÏ´Â °ÍÀÌ´Ù. Ưº°È÷ ÄÄÇ»Å͸¦ ÅëÇؼ­°¡ ¾Æ´Ï¶ó FC¿¡ Á÷Á¢ ¿¬°áµÉ ¼ö ÀÖ´Â ´Ù¸¥ ÀúÀå ÀåÄ¡¿Í µð½ºÅ©µéÀ» °øÀ¯Çϱâ À§Çؼ­ ¸»ÀÌ´Ù. ´ë¿ªÆø-º°·Î FC´Â 133¿¡¼­ 1,062 Mbits/s »çÀÌ ¾îµð¿¡¼­³ª ½ÇÇàµÇ¸é¼­ »ó´ëÀûÀ¸·Î ºü¸£´Ù°í ÇÑ´Ù. FC°¡ high-end SCSI¸¦ ´ëüÇÒ ¸¸Å­ À¯¸íÇØÁø´Ù¸é ÀÌ°ÍÀº °ª½Ñ ±â¼úÀÌ µÉ °ÍÀÌ´Ù; Áö±ÝÀº °ª½Ñ ±â¼úÀÌ ¾Æ´Ï¸ç ¸®´ª½º¿¡ ÀÇÇؼ­ Áö¿øµÇÁö ¾Ê´Â´Ù. FC ·¹ÆÛ·±½ºµé¿¡ ´ëÇÑ ÁÁÀº ÄÝ·¢¼ÇÀº ¿¡¼­ Fibre Channel Association¿¡ ÀÇÇؼ­ °ü¸®µÇ°í ÀÖ´Ù. 3.2.8. ÆÄÀ̾î¿ÍÀ̾î(FireWire, IEEE 1394) o ¸®´ª½º Áö¿ø: no o ÃÖ´ë ´ë¿ªÆø: 196.608 Mb/s (°ð, 393.216 Mb/s) o ÃÖ¼Ò Áöü: ? o ±¸¸Å ¹æ¹ý: ¸ÖƼº¥´õ Çϵå¿þ¾î o ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: PCI o ³×Æ®¿÷ ±¸Á¶: »çÀÌŬ ¾ø´Â ·£´ý(ÀÚ°¡-¼³Á¤) o ±â°è´ç ºñ¿ë: $600 FireWire, , IEEE 1394-1995 Ç¥ÁØÀÎ ÀÌ°ÍÀº °í°´ ÀüÀÚÀåºñ(electronics)¸¦ À§ÇÑ Àúºñ¿ë °í¼Ó µðÁöÅ» ³×Æ®¿÷À» À§Çؼ­ °í¾ÈµÈ °ÍÀÌ´Ù. Áø¿­Àå ¾îÇø®ÄÉÀ̼ÇÀº DV µðÁöÅÐ ºñµð¿À Ä·ÄÚ´õ¸¦ ÄÄÇ»ÅÍ¿¡ ¿¬°áÇÏ´Â °ÍÀÌÁö¸¸ FireWire´Â SCSI¸¦ ´ëüÇÏ´Â °ÍºÎÅÍ ¿©·¯ºÐÀÇ °¡Á¤±ØÀå(home theater)ÀÇ °¢ ÄÄÆ÷³ÍÆ®µéÀ» »óÈ£¿¬°áÇÏ´Â °Í±îÁöÀÇ ¾îÇø®ÄÉÀ̼ǵéÀ» À§ÇÏ¿© »ç¿ëµÇµµ·Ï ÀǵµµÇ¾ú´Ù. ÀÌ°ÍÀº ¿ø(cycle)À» ¸¸µéÁö ¾Ê´Â ¹ö½ºµé°ú ºê¸®ÁöµéÀ» »ç¿ëÇÏ´Â ÀÓÀÇÀÇ ÅäÆú·ÎÁö¿¡¼­ ¿¬°áµÈ 64K Àåºñµé±îÁö Çã¶ôÇÏ°í ÄÄÆ÷³ÍÆ®µéÀÌ ´õÇØÁö°Å³ª Á¦°ÅµÉ ¶§ ÀÚµ¿À¸·Î ¼³Á¤À» °ËÃâÇÑ´Ù. ª°í(4 ¹ÙÀÌÆ® "quadlet") ³·Àº Áöü ½Ã°£À» °¡Áö´Â ¸Þ½ÃÁöµéÀÌ ATM-likeÇÑ µ¿±â(isochronous) Àü¼Û(¸ÖƼ¹ÌÀÌ´õ ¸Þ½ÃÁöµéÀÇ µ¿±â¸¦ ¸ÂÃß´Â µ¥ »ç¿ëµÈ´Ù)°ú ÇÔ²² Áö¿øµÈ´Ù. ¾Æ´äÅØ(Adaptec)Àº ´ÜÀÏ PCI ÀÎÅÍÆäÀ̽º Ä«µå¿¡ 63°³±îÁö ÀåÄ¡µéÀ» Çã¶ôÇÏ´Â FireWire Á¦Ç°µéÀ» °¡Áö°í ÀÖ°í ¿¡ FireWire¿¡ ´ëÇÑ ÁÁÀº ÀϹÝÀûÀÎ Á¤º¸¸¦ ´ã°í ÀÖ´Ù. ºñ·Ï FireWire°¡ »ç¿ë °¡´ÉÇÑ °¡Àå ³ôÀº ´ë¿ªÆø ³×Æ®¿÷ÀÌ µÉ ¼ö´Â ¾ø°ÚÁö¸¸ °í°´-·¹º§ ¸¶ÄÏ(°¡°ÝÀ» ¾ÆÁÖ ³·°Ô ¸¸µé)°ú ³·Àº Áöü ½Ã°£ Áö¿øÀº ÀÌ°ÍÀ» ¸î³â À̳»¿¡ ¸®´ª½º ÇǾ¾ Ŭ·¯½ºÅÍ ¸Þ½ÃÁö-Àü´Þ ³×Æ®¿÷ ±â¼úµé ÁßÀÇ Çϳª·Î ¸¸µé °ÍÀÌ´Ù. 3.2.9. HiPPI°ú ½Ã·¯¾ó HiPPI o ¸®´ª½º Áö¿ø: no o ÃÖ´ë ´ë¿ªÆø: 1,600 Mb/s (½Ã¸®¾óÀº 1,200 Mb/s) o ÃÖ¼Ò Áöü: ? o ±¸ÀÔ ¹æ¹ý: ¸ÖƼ-º¥´õ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: EISA, PCI o ³×Æ®¿÷ ±¸Á¶: ½ºÀ§Ä¡ Çãºê o ±â°è´ç ºñ¿ë: $3,500 (½Ã¸®¾óÀº $4,500) HiPPI (High Performance Parallel Interface)´Â ¿ø·¡ ½´ÆÛ ÄÄÇ»ÅÍ¿Í ´Ù¸¥ ±â°è(½´ÆÛÄÄ, ÇÁ·¹ÀÓ ¹öÆÛ, µð½ºÅ© ¾î·¹ÀÌ µî) °£¿¡ ´ë·®ÀÇ µ¥ÀÌÅÍ ¼ÂµéÀÇ Àü¼ÛÀ» À§Çؼ­ ¾ÆÁÖ ³ôÀº ´ë¿ªÆøÀ» Á¦°øÇϵµ·Ï ÀǵµµÇ¾úÀ¸¸ç ½´ÆÛÄÄ¿¡ ´ëÇÑ Áö¹èÀûÀÎ ¤½ÁØÀÌ µÇ¾ú´Ù. ºñ·Ï ÀÌ°ÍÀº ¸ð¼ø ¾î¹ý(oxymoron)À̱ä ÇÏÁö¸¸ ½Ã¸®¾ó HiPPIµµ ¶ÇÇÑ 32-ºñÆ® Æø Ç¥ÁØ(Æз¯·²) HiPPI ÄÉÀÌºí ´ë½Å¿¡ ±¤¼¶À¯ ÄÉÀ̺íÀ» ÀüÇüÀûÀ¸·Î »ç¿ëÇÔÀ¸·Î½á, À¯¸íÇØÁú °ÍÀÌ´Ù. Áö³ª ¸î ³âµ¿¾È HiPPI Å©·Î½º¹Ù ½ºÀ§Ä¡µéÀº ÀϹÝÀûÀÎ °ÍÀÌ µÇ¾úÀ¸¸ç °¡°ÝµéÀº ±Þ°ÝÇÏ°Ô ¶³¾îÁ³´Ù; ºÒÇàÇÏ°Ôµµ ½Ã¸®¾ó HiPPI´Â ¾ÆÁ÷ ºñ½Î°í ÀÌ°ÍÀÌ ¹Ù·Î PCI ¹ö½º ÀÎÅÍÆäÀ̽º Ä«µåµéÀº ÀϹÝÀûÀ¸·Î Áö¿øÇÏ´Â °ÍÀÌ´Ù. ´õ ³ª»Û °ÍÀº ¸®´ª½º´Â ¾ÆÁ÷ HiPPI¸¦ Áö¿øÇÏÁö ¸øÇÑ´Ù´Â °ÍÀÌ´Ù. HiPPIÀÇ ÁÁÀº °³°üÀº CERN¿¡ ÀÇÇؼ­ ¿¡¼­ °ü¸®µÇ°í ÀÖ´Ù; ±×µéÀº ¶ÇÇÑ ¿¡ HiPPI º¥´õµéÀÇ ´Ù¼Ò ±â´Ù¶õ ¸®½ºÆ®¸¦ °ü¸®ÇÑ´Ù. 3.2.10. IrDA (Àû¿Ü¼± µ¥ÀÌÅÍ ¿¬ÇÕ; Infrared Data Association) o ¸®´ª½º Áö¿ø: no? o ÃÖ´ë ´ë¿ªÆø: 1.15 Mb/s¿Í 4 Mb/s o ÃÖ¼Ò Áöü: ? o ±¸¸Å ¹æ¹ý: ¸ÖƼ-º¥´õ Çϵå¿þ¾î o ÀÎÅÍÆäÀ̽º/¹ö½º: IrDA o ³×Æ®¿÷ ±¸Á¶: ªÀº °Å¸® ¹«¼±(thin air) ;-) o ±â°è´ç ºñ¿ë: $0 IrDA(Àû¿Ü¼± µ¥ÀÌÅÍ ¿¬ÇÕ, http://www.irda.org/)´Â ¸¹Àº ·¦Åé ÇǽõéÀÇ Ãø¸é¿¡ ÀÖ´Â ÀÛÀº Àû¿Ü¼± ÀåÄ¡ÀÌ´Ù. ÀÌ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇؼ­ µÎ °³ ÀÌ»óÀÇ ±â°èµéÀ» Ä¿³ØÆ®ÇÏ´Â °ÍÀº Ÿ°í ³¯ ¶§ºÎÅÍ ¾î·Æ´Ù. ±×·¡¼­ Ŭ·¯½ºÅ͸µ¿¡ »ç¿ëµÉ °¡´É¼ºÀÌ ³·´Ù. Don Becker°¡ IrDA¿¡ ¸î°¡Áö ¿¹ºñ ÀÛ¾÷À» Çß¾ú´Ù. 3.2.11. Myrinet o ¸®´ª½º Áö¿ø: ¶óÀ̺귯¸® o ÃÖ´ë ´ë¿ªÆø: 1,280 Mb/s o ÃÖ¼Ò Áöü: 9 ¸¶ÀÌÅ©·Î ÃÊ o ±¸¸Å ¹æ¹ý: ´ÜÀÏ-º¥´õ Çϵå¿þ¾î o ÀÎÅÍÆäÀ̽º Æ÷Æ®/¹ö½º: PCI o ³×Æ®¿÷ ±¸Á¶: ½ºÀ§Ä¡ Çãºê o ±â°è´ç °¡°Ý: $1,800 Myrinet Àº "½Ã½ºÅÛ ¿µ¿ª ³×Æ®¿÷" (System Area Network, SAN)À¸·Î »ç¿ëµÉ ¼ö ÀÖµµ·Ï °í¾ÈµÈ ±Ù°Å¸® ¿µ¿ª ³×Æ®¿÷(LAN)ÀÌ´Ù. Áï º´·Ä ½Ã½ºÅÛÀ¸·Î ¿¬°áµÈ ±â°èµéÀÌ °¡µæÂù ³×Æ®¿÷ Äɺñ³Ý. LAN°ú SAN ¹öÀüµéÀº ¼­·Î ´Ù¸¥ ¹°¸®Àû ¸Åü¸¦ »ç¿ëÇÏ°í ´Ù¼Ò ´Ù¸¥ Ư¼ºµéÀ» °¡Áø´Ù; ÀϹÝÀûÀ¸·Î SAN ¹öÀüÀº Ŭ·¯½ºÅÍ ¾È¿¡¼­ »ç¿ëµÉ °ÍÀÌ´Ù. MyrientÀº ±¸Á¶ÀûÀ¸·Î ¾ÆÁÖ ÀüÅëÀûÀÎ °ÍÀÌÁö¸¸ Ưº°È÷ Àß-±¸ÇöµÈ °ÍÀ̶ó´Â ÆòÆÇÀ» µè°í ÀÖ´Ù. ¸®´ª½º¸¦ À§ÇÑ µå¶óÀ̹ö´Â ¼º´ÉÀÌ ÁÁ´Ù´Â ¸»À» µè´Â´Ù. ºñ·Ï È£½ºÆ® ÄÄÇ»ÅÍ¿¡ ´ëÇÑ ¼­·Î ´Ù¸¥ PCI ¹ö½º ±¸Çö¹°µé¿¡ ´ëÇؼ­ ¿©·¯ Ä¿´Ù¶õ ¼º´É º¯È­µéÀÌ ¸®Æ÷Æ®µÈ ¹Ù°¡ ÀÖ¾úÁö¸¸ ¸»ÀÌ´Ù. ÇöÀç MyrinetÀº ³Ê¹« ½É°¢ÇÏ°Ô "¿¹»êÀ» À§ÇùÇÏ´Â" °ÍÀÌ ¾Æ´Ñ Ŭ·¯½ºÅÍ ±×·ìÀÇ ¼±È£µÇ´Â ³×Æ®¿÷ÀÓ¿¡ Ʋ¸²¾ø´Ù. ¸®´ª½º ÇǾ¾¿¡ ´ëÇÑ »ý°¢ÀÌ ÃÖ¼Ò 256 MB RAM°ú SCSI RAID¸¦ °¡Áø Pentium Pro³ª Pentium II¶ó¸é MyrinetÀÇ °¡°ÝÀº ²Ï ÇÕ¸®ÀûÀÎ °ÍÀÌ µÈ´Ù. ±×·¯³ª Á» ´õ ÀϹÝÀûÀÎ ÇǾ¾ ¼³Á¤À» »ç¿ëÇÑ´Ù¸é ¿©·¯ºÐÀÇ ¼±ÅÃÀÌ Myrinet¿¡ ¿¬°áµÈ N ±â°èµéÀ̳ª ¸ÖƼ ÆнºÆ® À̳ʳÝÀ¸·Î ¹­ÀÎ 2N°ú TTL_PAPERS »çÀÌ¿¡ ÀÖ´Ù´Â °ÍÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù. ¿©·¯ºÐÀÇ ¿¹»êÀÌ ¾ó¸¶³ª µÇ´Â°¡¿Í ¿©·¯ºÐÀÌ ½Å°æ¾²´Â ÄÄÇ»ÅÍÀÇ »ç¾çÀÌ ¾î¶² °ÍÀΰ¡¿¡ µû¶ó ÁÂÁö ¿ìÁö µÈ´Ù. 3.2.12. ÆĶó½ºÅ×À̼Ç(Parastation) o ¸®´ª½º Áö¿ø: HAL ¶Ç´Â ¼ÒÄÏ ¶óÀ̺귯¸® o ÃÖ´ë ´ë¿ªÆø: 125 Mb/s o ÃÖ¼Ò Áöü: 2 microseconds o ±¸ÀÔ ¹æ¹ý: ´ÜÀÏ-º¥´õ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: PCI o ³×Æ®¿÷ ±¸Á¶: Çãºê¾ø´Â ¸Á(mesh) o ±â°è´ç ºñ¿ë: > $1,000 Karlsruhe ´ëÇб³ Á¤º¸°øÇаú(Department of Informatics)ÀÇ ÆĶó½ºÅ×À̼Ç(Parastation) ÇÁ·ÎÁ§Æ® ´Â PVM-ȣȯ Ä¿½ºÅÒ Àú-Áöü ³×Æ®¿÷À» ±¸Ãà ÁßÀÌ´Ù. ±×µéÀº ¸ÇóÀ½ Ä¿½ºÅÒ EISA ÀÎÅÍÆäÀ̽º¿Í BSD UNIX¸¦ ½ÇÇàÇÏ´Â ÇǾ¾µéÀ» »ç¿ëÇÑ ¸ÇóÀ½ ±¸ÃàµÈ µÎ°³ÀÇ ÇÁ·Î¼¼¼­ ParaPC ÇÁ·ÎÅäŸÀÔÀ» ¸¸µé¾úÀ¸¸ç ±× ´ÙÀ½ DEC AlphaµéÀ» »ç¿ëÇÑ Á» ´õ Å« Ŭ·¯½ºÅ͵éÀ» ¸¸µé¾ú´Ù. PCI Ä«µåµéÀº HitexÀ̶ó°í ºÒ¸®´Â ȸ»ç¿Í °øÁ¶Çؼ­ ¸¸µé¾îÁ³´Ù( ÂüÁ¶). ÆĶó½ºÅ×ÀÌ¼Ç Çϵå¿þ¾î´Â ºü¸£°í ½Å·Ú¼º ÀÖ´Â ¸Þ½ÃÁö Àü¼Û°ú ´Ü¼øÇÑ °ü¹®(barrier) µ¿±âÈ­¸¦ ±¸ÇöÇÑ °ÍÀÌ´Ù. 3.2.13. PLIP o ¸®´ª½º Áö¿ø: Ä¿³Î µå¶óÀ̹ö o ÃÖ´ë ´ë¿ªÆø: 1.2 Mb/s o ÃÖ¼Ò Áöü: 1,000 microseconds? o ±¸ÀÔ ¹æ¹ý: »óÇ° Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: SPP o ³×Æ®¿÷ ±¸Á¶: 2 ±â°è °£ ÄÉÀ̺í o ±â°è´ç ºñ¿ë: $2 "LapLink" ÄÉÀ̺íÀÇ ºñ¿ëÀ¸·Î PLIP(Parallel Line Interface Protocol)´Â Ç¥ÁØ ¼ÒÄÏ-±â¹Ý ¼ÒÇÁÆ®¿þ¾î¸¦ »ç¿ëÇÏ¿© Ç¥ÁØ Æз¯·² Æ÷Æ®µéÀ» ÅëÇؼ­ µÎ ¸®´ª½º ±â°èµéÀÌ Åë½ÅÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ´ë¿ªÆø, Áöü, ±×¸®°í ÃøÁ¤°¡´É¼º(scalability)ÀÇ Ãø¸é¿¡¼­ º¸¸é ÀÌ°ÍÀº ¾ÆÁÖ Áß¿äÇÑ ³×Æ®¿÷ ±â¼úÀÌ ¾Æ´Ï´Ù. ±×·¯³ª °ÅÀÇ ¿µ¿¡ °¡±î¿î °¡°Ý°ú ¼ÒÇÁÆ®¿þ¾î ȣȯ¼ºÀÌ À¯¿ëÇÏ´Ù. µå¶óÀ̹ö´Â Ç¥ÁØ ¸®´ª½º Ä¿³Î ¹èÆ÷ÆÇÀÇ ÀϺÎÀÌ´Ù. 3.2.14. SCI o ¸®´ª½º Áö¿ø: no o ÃÖ´ë ´ë¿ªÆø: 4,000 Mb/s o ÃÖ¼Ò Áöü: 2.7 microseconds o ±¸ÀÔ ¹æ¹ý: ¸ÖƼ-º¥´õ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: ƯÁ¤È¸»ç(proprietary) PCI o ³×Æ®¿÷ ±¸Á¶: ? o ±â°è´ç ºñ¿ë: > $1,000 SCI (Scalable Coherent Interconnect, ANSI/IEEE 1596-1992)ÀÇ ¸ñÀûÀº ±âº»ÀûÀ¸·Î ¸¹Àº ¼öÀÇ ±â°èµé¿¡ °ÉÃÄ ±ÙÁ¢(coherent) °øÀ¯ ¸Þ¸ð¸® °øÀ¯¸¦ Áö¿øÇÒ ¼ö ÀÖ´Â °í¼º´É ¸ÞÄ«´ÏÁò°ú ´Ù¾çÇÑ Å¸ÀÔÀÇ ¸Þ½ÃÁö Àü¼ÛÀ» Á¦°øÇÏ´Â °ÍÀÌ´Ù. SCIÀÇ °í¾ÈµÈ ´ë¿ªÆø°ú Áöü´Â ´ëºÎºÐÀÇ ´Ù¸¥ ³×Æ®¿÷ ±â¼úµé°ú ºñ±³Çؼ­ µÑ ´Ù "³î¶ó¿î °Í"À̶ó°í ¸»Çصµ ±¦Âú´Ù. ´ÜÁ¡Àº SCI°¡ ½Ñ Á¦Ç° À¯´ÏÆ®·Î½á ³Î¸® »ç¿ë°¡´ÉÇÏÁö ¾Ê´Ù´Â °Í°ú ¸®´ª½º Áö¿øÀÌ ¾ÆÁ÷ ¾ø´Ù´Â °ÍÀÌ´Ù. SCI´Â ÁÖ·Î HP/Convex Exemplar SPP¿Í Sequent NUMA-Q 2000( )¿Í °°Àº Áö¿ªÀûÀ¸·Î-°øÀ¯µÈ ¹°¸®ÀûÀ¸·Î-¹èÆ÷µÈ ¸Þ¸ð¸® ±â°èµé(logically-shared physically-distributed memory machines)¿¡ ´ëÇÑ ´Ù¾çÇÑ °íÀ¯ µðÀÚÀÎ ¾È¿¡¼­ »ç¿ëµÇ¾ú´Ù. ±×·¯³ª Dolphin( ÂüÁ¶)·ÎºÎÅÍ SCI´Â PCI ÀÎÅÍÆäÀ̽º Ä«µå¿Í 4-way ½ºÀ§Ä¡(16 ±â°èµé±îÁö ³×°³ÀÇ 4-way ½ºÀ§Ä¡µéÀ» ºÙ¿©¼­ ¿¬°áµÉ ¼ö ÀÖ´Ù)µéÀÌ ±×µéÀÇ CluStar Á¦Ç° ¶óÀÎÀ¸·Î½á »ç¿ë°¡´ÉÇÏ´Ù. SCI °³°ü¿¡ ´ëÇÑ ÁÁÀº ¸µÅ©µéÀº CERN¿¡ ÀÇÇؼ­ ¿¡¼­ °ü¸®µÈ´Ù. 3.2.15. SCSI o ¸®´ª½º Áö¿ø: Ä¿³Î µå¶óÀ̹ö o ÃÖ´ë ´ë¿ªÆø: 5 Mb/s¿¡¼­ 20 Mb/s ÀÌ»ó±îÁö o ÃÖ¼Ò Áöü: ? o ±¸ÀÔ ¹æ¹ý: ¸ÖƼ-º¥´õ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: PCI, EISA, ISA Ä«µå o ³×Æ®¿÷ ±¸Á¶: SCSI ÀåºñµéÀ» °øÀ¯ÇÏ´Â ±â°è°£ ¹ö½º o ±â°è´ç ºñ¿ë: ? SCSI (Small Computer Systems Interconnect)´Â ±âº»ÀûÀ¸·Î µð½ºÅ© µå¶óÀ̺êµé, CDROMµé, À̹ÌÁö ½ºÄ³³Ê µî°ú °°Àº µ¥ »ç¿ëµÇ´Â I/O ¹ö½ºÀÌ´Ù. ¿©±â¿¡´Â ºÐ¸®µÈ ¼¼°³ÀÇ Ç¥Áصé SCSI-1, SCSI-2, ±×¸®°í SCSI-3; Fast and Ultra speeds; ±×¸®°í µ¥ÀÌÅÍ Æнº ³Êºñ·Î 8, 16, ¶Ç´Â 32ºñÆ®(SCSI-3¿¡¼­ ¾ð±ÞµÈ FireWire ȣȯ¼º°ú ÇÔ²²) °¡ ÀÖ´Ù. ÀÌ°ÍÀº ¾ÆÁÖ È¥¶õ½º·´´Ù. ±×·¯³ª ¿ì¸®´Â ¸ðµÎ ÁÁÀº SCSI´Â EIDEº¸´Ù ´õ ºü¸£°í ÀåºñµéÀ» Á» ´õ È¿À²ÀûÀ¸·Î °ü¸®ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¾È´Ù. ¸¹Àº »ç¶÷µéÀÌ ±ú´ÝÁö ¸øÇÏ´Â °ÍÀº µÎ ÄÄÇ»Å͵éÀÌ ´ÜÀÏ SCSI ¹ö½º¸¦ °øÀ¯ÇÏ´Â °ÍÀÌ ¾ÆÁÖ ´Ü¼øÇÏ´Ù´Â »ç½ÇÀÌ´Ù. ÀÌ·± ¼³Á¤ ŸÀÔÀº ±â°è°£ µð½ºÅ© µå¶óÀ̺êµéÀ» °øÀ¯ÇÏ°í Àå¾Ö º¹±¸(fail-over)¸¦ ±¸Çö-ÇÑ ±â°è°¡ ´Ù¸¥ ±â°è°¡ ½ÇÆÐÇßÀ» ¶§ µ¥ÀÌÅͺ£À̽º ¿ä±¸¸¦ ¶°¸Ãµµ·Ï ÇÏ°Ô ÇÔÀ¸·Î½á-¿¡ ¾ÆÁÖ À¯¿ëÇÏ´Ù. ÇöÀç ÀÌ°ÍÀº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ PC Ŭ·¯½ºÅÍ Á¦Ç° WolfPack¿¡ ÀÇÇؼ­ Áö¿øµÇ´Â À¯ÀÏÇÑ ¸ÞÄ«´ÏÁòÀÌ´Ù. ±×·¯³ª Á» ´õ Å« ½Ã½ºÅÛµé·Î È®ÀåµÉ ¼ö ¾ø´Ù´Â °ÍÀÌ °øÀ¯ SCSI¸¦ ÀϹÝÀûÀÎ º´·Ä 󸮿¡ ÀÖ¾î ´ú Èï¹Ì·Ó°Ô ¸¸µç´Ù. 3.2.16. ¼­¹ö³Ý(ServerNet) o ¸®´ª½º Áö¿ø: no o ÃÖ´ë ´ë¿ªÆø: 400 Mb/s o ÃÖ¼Ò Áöü: 3 microseconds o ±¸ÀÔ ¹æ¹ý: ´ÜÀÏ-º¥´õ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: PCI o ³×Æ®¿÷ ±¸Á¶: ÇãºêÀÇ À°°¢ Æ®¸®/4¸éü °ÝÀÚ(hexagonal tree/tetrahedral lattice of hubs) o ±â°è´ç ºñ¿ë: ? ¼­¹ö³Ý(ServerNet)Àº Tandem, ÀÇ °í-¼º´É ³×Æ®¿÷ Çϵå¿þ¾îÀÌ´Ù. Ưº°È÷ ¿Â¶óÀÎ Æ®·£Àè¼Ç ó¸®(OLTP) ¼¼°è¿¡¼­ ÅÄ´ýÀº °í-½Å·Úµµ ½Ã½ºÅÛµéÀÇ ¼±µÎ·Î ¾Ë·ÁÁ® À־ ±×µéÀÇ ³×Æ®¿÷ÀÌ °í-¼º´É »Ó¸¸ÀÌ ¾Æ´Ï°í "³ôÀº µ¥ÀÌÅÍ ÅëÇÕ(integrity)°ú ½Å·Úµµ"±îÁö ÁÖÀåÇصµ ³î¶ó¿î ÀÏÀÌ ¾Æ´Ï´Ù. ServerNetÀÇ ´Ù¸¥ Èï¹Ì·Î¿î ¸éÀº ÀÓÀÇÀÇ ÀåÄ¡¿¡¼­ ´Ù¸¥ ÀÓÀÇÀÇ ÀåÄ¡·Î Á÷Á¢ µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖ´Ù°í ÁÖÀåÇÑ´Ù´Â °ÍÀÌ´Ù; ``MPI'' ¼½¼Ç¿¡¼­ ¼³¸íµÈ MPI ¸®¸ðÆ® ¸Þ¸ð¸® ¾ï¼¼½º ¸ÞÄ«´ÏÁòµé¿¡ ÀÇÇؼ­ Á¦¾ÈµÈ °Í°ú ºñ½ÁÇÑ ¿ø-»çÀÌµå ½ºÅ¸ÀÏ·Î, ÇÁ·Î¼¼¼­µé»çÀ̻Ӹ¸ÀÌ ¾Æ´Ï°í µð½ºÅ© µå¶óÀ̺êµé µî »çÀÌ¿¡¼­µµ ±×·¸´Ù. ¼­¹ö³Ý¿¡ ´ëÇÑ ¸¶Áö¸· ÇÑ°¡Áö ÄÚ¸àÆ®: ´ÜÁö ½Ì±Û º¥´õ¸¸ Á¸ÀçÇÏÁö¸¸ ±× º¥´õ´Â ¼­¹ö³ÝÀ» ÁÖ¿ä Ç¥ÁØÀ¸·Î, ÀáÀçÀûÀ¸·Î ¸¸µé ¼ö ÀÖÀ» ¸¸Å­ ÃæºÐÈ÷ °­·ÂÇÏ´Ù. TandemÀº Compaq ¼ÒÀ¯ÀÌ´Ù. 3.2.17. SHRIMP o ¸®´ª½º Áö¿ø: »ç¿ëÀÚ-·¹º§ ¸Þ¸ð¸® ¸ÊµÈ(memory-mapped) ÀÎÅÍÆäÀ̽º o ÃÖ´ë ´ë¿ªÆø: 180 Mb/s o ÃÖ¼Ò Áöü: 5 microseconds o ±¸ÀÔ ¹æ¹ý: ¿¬±¸ ÇÁ·ÎÅäŸÀÔ o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: EISA o ³×Æ®¿÷ ±¸Á¶: mesh backplane (ÀÎÅÚ Paragon¿Í À¯»ç) o ±â°è´ç ºñ¿ë: ? ÇÁ¸°½ºÅÏ ´ëÇб³ ÄÄÇ»ÅÍ °úÇÐ Çаú¿¡¼­ ÁøÇàÇÏ°í ÀÖ´Â SHRIMP ÇÁ·ÎÁ§Æ®, ´Â ó¸® ³ëµå·Î½á ¸®´ª½º¸¦ ½ÇÇàÇÏ´Â ÇǾ¾µéÀ» »ç¿ëÇÑ º´·Ä ÄÄÇ»Å͸¦ ±¸ÃàÇÏ°í ÀÖ´Ù. ù¹ø° SHRIMP(Scalable, High-Performance, Really Inexpensive Multi- ProcessorÀÇ ¾àÀÚ)´Â Ä¿½ºÅÒ EISA Ä«µå ÀÎÅÍÆäÀ̽º À§ÀÇ µà¾ó Æ÷Æ®¸¦ °¡Áö´Â RAMÀ» »ç¿ëÇÑ ´Ü¼øÇÑ µÎ-ÇÁ·Î¼¼¼­ ÇÁ·ÎÅä ŸÀÔÀ̾ú´Ù. Áö±ÝÀº ÀÎÅÚ Paragon( ÂüÁ¶)¿¡¼­ »ç¿ëµÈ ±×¹°¸Á(mesh) ¶ó¿ìÆà ³×Æ®¿÷°ú ±âº»ÀûÀ¸·Î µ¿ÀÏÇÑ "hub"¿¡ ¿¬°áÇϱâ À§Çؼ­ Ä¿½ºÅÒ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â Á» ´õ Å« ¼³Á¤µé¿¡ È®Àå°¡´ÉÇÑ ÇÁ·ÎÅäŸÀÔÀÌ Á¸ÀçÇÑ´Ù. ¿Àº£Çìµå°¡ ÀûÀº "°¡»ó ¸Þ¸ð¸® ¸ÊµÈ Åë½Å" Çϵå¿þ¾î¿Í Áö¿ø ¼ÒÇÁÆ®¿þ¾î¸¦ °³¹ßÇϱâ À§ÇÑ »ó´çÈ÷ ¸¹Àº ³ë·ÂÀÌ ÀÌ·ç¾îÁ³´Ù. 3.2.18. SLIP o ¸®´ª½º Áö¿ø: Ä¿³Î µå¶óÀ̹ö o ÃÖ´ë ´ë¿ªÆø: 0.1 Mb/s o ÃÖ¼Ò Áöü: 1,000 microseconds? o ±¸ÀÔ ¹æ¹ý: »óÇ° Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: RS232C o ³×Æ®¿÷ ±¸Á¶: µÎ ±â°èµé »çÀÌ¿¡ ÄÉÀÌºí »ç¿ë o ±â°è´ç ºñ¿ë: $2 ºñ·Ï SLIP(½Ã¸®¾ó ¶óÀÎ ÀÎÅÍÆäÀ̽º ÇÁ·ÎÅäÄÝ;Serial Line Interface Protocol)Àº ¼º´É ½ºÆåÆ®·³¿¡¼­ ³·Àº ÂÊ¿¡ ¿ÏÀüÈ÷ À§Ä¡ÇÏ°í ÀÖÁö¸¸ SLIP(¶Ç´Â CSLIP¶Ç´Â PPP)´Â µÎ ±â°èµéÀÌ ÀÏ¹Ý RS232 ½Ã¸®¾ó Æ÷Æ®µéÀ» ÅëÇؼ­ ¼ÒÄÏ Åë½ÅÀ» ¼öÇàÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¶Ç´Â ±×µéÀº ¸ðµ©À» °æÀ¯ÇÑ ´ÙÀ̾ó-¾÷À» ÅëÇؼ­ ¿¬°áµÉ ¼öµµ ÀÖ´Ù. ¾î¶² °æ¿ì¿¡µµ Áöü ½Ã°£Àº ³ô°í ´ë¿ªÆøÀº ³·´Ù. ±×·¡¼­ SLIPÀº ´Ù¸¥ ´ë¾ÈµéÀÌ ÀüÇô ºÒ°¡´ÉÇÒ ¶§¸¸ »ç¿ëµÇ¾î¾ß ÇÒ °ÍÀÌ´Ù. ±×·¯³ª ´ëºÎºÐÀÇ ÇǾ¾µåÀÌ µÎ °³ÀÇ RS232 Æ÷Æ®µéÀ» °®°í ÀÖ´Ù´Â °ÍÀº ÁÖ¸ñÇÒ¸¸ÇÑ °¡Ä¡°¡ ÀÖ´Ù. ±×·¡¼­ ±â°èµéÀ» ¼±Çü ¹è¿­À̳ª ¸µÇüÀ¸·Î ´Ü¼øÇÏ°Ô ¿¬°áÇؼ­ ±â°èµé ±×·ìÀ» ³×Æ®¿öÅ·ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. EQLÀ̶ó°í ºÒ¸®´Â ·Îµå ½¦¾î¸µ ¼ÒÇÁÆ®¿þ¾îµµ Á¸ÀçÇÑ´Ù. 3.2.19. TTL_PAPERS o ¸®´ª½º Áö¿ø: AFAPI ¶óÀ̺귯¸® o ÃÖ´ë ´ë¿ªÆø: 1.6 Mb/s o ÃÖ¼Ò Áöü: 3 microseconds o ±¸ÀÔ ¹æ¹ý: ÆÛºí¸¯-µµ¸ÞÀÎ ¼³°è, ½Ì±Û-º¥´õ Çϵå¿þ¾î o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: SPP o ³×Æ®¿÷ ±¸Á¶: ÇãºêµéÀÇ Æ®¸® o ±â°è´ç ºñ¿ë: $100 ÆÛµà ´ëÇб³ÀÇ ÀüÀÚ ¹× ÄÄÇ»ÅÍ ¿£Áö´Ï¾î¸µ Çб³¿¡¼­ ¼öÇà ÁßÀÎ PAPERS (Purdue's Adapter for Parallel Execution and Rapid Synchronization) ÇÁ·ÎÁ§Æ®, ´Â º´·Ä ½´ÆÛÄÄÇ»ÅÍ°¡ º¯Á¶µÇÁö ¾ÊÀº ÇǾ¾µé/¿öÅ©½ºÅ×À̼ǵéÀ» ³ëµå·Î »ç¿ëÇÏ¿© ±¸ÃàµÉ ¼ö ÀÖµµ·Ï ÇÏ´Â, Å©±â Á¶Àý °¡´ÉÇÏ°í ³·Àº-Áöü ½Ã°£À» °¡Áö¸ç ÁýÇÕ ÇÔ¼ö Åë½Å Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î¸¦ ±¸Ãà Áß¿¡ ÀÖ´Ù. µÎ°¡Áö °³¹ß ¶óÀεéÀ» ´ë·« µû¸£´Â SPP(Ç¥ÁØ Æз¯·² Æ÷Æ®; Standard Parallel Port)¸¦ ÅëÇؼ­ ÇǾ¾µé/¿öÅ©½ºÅ×À̼ǵéÀ» ¿¬°áÇÑ PAPERS Çϵå¿þ¾î´Â ±× Á¾·ù°¡ 12°¡Áö°¡ ³Ñ´Â´Ù. "PAPERS"¶ó°í ºÒ¸®´Â ¹öÀüµéÀº ÀûÀýÇÑ ±â¼úÀÌ¸é ¹«¾ùÀ̵çÁö »ç¿ëÇؼ­ ´õ ³ôÀº ¼º´ÉÀ» ¸ñÇ¥·Î ÇÑ´Ù; ÇöÀç ÀÛ¾÷Àº FPGAµé°ú Áö±Ý °³¹ß Áß¿¡ ÀÖ´Â ³ôÀº ´ë¿ªÀÇ PCI ¹ö½º ÀÎÅÍÆäÀ̽º ¼³°èµéÀ» »ç¿ëÇÑ´Ù. ¹Ý¸é¿¡ "TTL_PAPERS"À̶ó°í ºÒ¸®´Â ¹öÀüµéÀº ÆÛµà ´ëÇÐ ¹Ù±ù¿¡¼­ ½±°Ô Àç»ý»êµÉ ¼ö ÀÖµµ·Ï µðÀÚÀÎµÈ °ÍÀÌ°í ÀϹÝÀûÀÎ TTL ·ÎÁ÷À» »ç¿ëÇؼ­ ¸¸µé¾îÁú ¼ö ÀÖ´Â ¾ÆÁÖ ´Ü¼øÇÑ °ø¿ë µµ¸ÞÀÎ ¼³°è(public domain designs)ÀÌ´Ù. ÀÌ·± µðÀÚÀÎ Áß Çϳª´Â »ó¿ëÀ¸·Î ¸¸µé¾îÁ³´Ù. ´Ù¸¥ ´ëÇеéÀÇ Ä¿½ºÅÒ Çϵå¿þ¾î µðÀÚÀΰú ´Ù¸£°Ô TTL_PAPERS Ŭ·¯½ºÅ͵éÀº USA¿¡¼­ ´ëÇѹα¹±îÁö ¸¹Àº ´ëÇе鿡¼­ Á¶¸³µÇ¾î ¿Ô´Ù. ´ë¿ªÆøÀº SPP Ä¿³Ø¼Çµé¿¡ ÀÇÇؼ­ ½É°¢ÇÏ°Ô Á¦ÇѵǾî ÀÖÁö¸¸ °¡Àå ºü¸¥ ¸Þ½ÃÁö-±â¹Ý ½Ã½ºÅÛµéÀº ±×·¯ÇÑ ÁýÇÕ ÇÔ¼öµé(aggregate functions)¿¡ ´ëÇؼ­ ÇÊÀûÇÒ¸¸ÇÑ ¼º´ÉÀ» Á¦°øÇÒ ¼ö ¾ø´Ù. ±×·¡¼­ PAPERS´Â Ưº°È÷ ºñµð¿À º®(video wall; ¿ªÀÚÁÖ: Àü½ÃÀå µî¿¡¼­ º¼ ¼ö ÀÖ´Â ´ëÇü µð½ºÇ÷¹ÀÌ ¹× ÄÄÇ»ÅÍ, »ç¿îµå ½Ã½ºÅÛÀÇ Á¶ÇÕ)ÀÇ µð½ºÇ÷¹À̸¦ µ¿±âÈ­ÇÏ´Â µ¥(ºñµð¿À º®¿¡ ´ëÇؼ­ ¾ÕÀ¸·Î ³ª¿Ã Video Wall HOWTO¿¡¼­ ÀÚ¼¼È÷ ´Ù·ê °ÍÀÌ´Ù), °í-´ë¿ª ³×Æ®¿÷¿¡ ´ëÇÑ ½ºÄÉÁÙ¸µ ¾ï¼¼½º, À¯ÀüÀÚ °Ë»ö(genetic search)¿¡¼­ Àü¿ª ºñ±³(global fitness)¸¦ Æò°¡ÇÏ´Â °Í µî¿¡¼­ Ź¿ùÇÏ´Ù. ºñ·Ï PAPERS Ŭ·¯½ºÅ͵éÀÌ IBM PowerPC AIX, DEC Alpha OSF/1, ±×¸®°í HP PA-RISC HP-UX ±â°èµéÀ» »ç¿ëÇؼ­ ¸¸µé¾îÁ³Áö¸¸ ¸®´ª½º-±â¹Ý PCµéÀÌ °¡Àå Àß Áö¿øµÇ´Â Ç÷§ÆûÀÌ´Ù. TTL_PAPERS AFAPI¸¦ »ç¿ëÇÏ´Â »ç¿ëÀÚ ÇÁ·Î±×·¥µéÀº ¸®´ª½º¿¡¼­, °¢ ¾ï¼¼½º¿¡ ´ëÇؼ­ OS È£Ãâ¾øÀÌ SPP Çϵå¿þ¾î Æ÷Æ® ·¹Áö½ºÅ͵éÀ» ¾ï¼¼½ºÇÑ´Ù. ÀÌ·¸°Ô Çϱâ À§Çؼ­ AFAPI´Â ¸Ç¸ÕÀú iopl()³ª ioperm()¸¦ »ç¿ëÇؼ­ Æ÷Æ® Æ۹̼ÇÀ» ȹµæÇÑ´Ù. ÀÌ·± È£ÃâµéÀÇ ¹®Á¦Á¡Àº µÑ ´Ù »ç¿ëÀÚ ÇÁ·Î±×·¥ÀÌ ±ÇÇÑÀ» °®µµ·Ï(¿ªÀÚÁÖ: ¾Æ¹«·¡µµ ·çÆ® ±ÇÇÑÀÏ °Í °°´Ù) ¿ä±¸Çؼ­ ÀáÀçÀûÀÎ º¸¾È ±¸¸ÛÀ» ¸¸µç´Ù´Â °ÍÀÌ´Ù. ¼Ö·ç¼ÇÀº ¼±ÅÃÀûÀÎ Ä¿³Î ÆÐÄ¡, ÀÌ´Ù. ÀÌ°ÍÀº ±ÇÇÑÀÖ´Â ÇÁ·Î¼¼½º°¡ ÀÓÀÇÀÇ ÇÁ·Î¼¼½º¿¡ ´ëÇÑ Æ÷Æ® Æ۹̼ÇÀ» Á¦¾îÇϵµ·Ï ÇÑ´Ù. 3.2.20. USB (Universal Serial Bus) o ¸®´ª½º Áö¿ø: kernel driver o ÃÖ´ë ´ë¿ªÆø: 12 Mb/s o ÃÖ¼Ò Áöü: ? o ±¸ÀÔ ¹æ¹ý: commodity hardware o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: USB o ³×Æ®¿÷ ±¸Á¶: bus o ±â°è´ç ºñ¿ë: $5? USB (Universal Serial Bus, )´Â Å°º¸µå, È­»ó ȸÀÇ Ä«¸Þ¶ó µî 127°³±îÁö ÁÖº¯±â±âµéÀ» ´Þ ¼ö ÀÖ°í ÇÖ-Ç÷¯±×(hot-pluggable) °¡´ÉÇÑ ÀÏ¹Ý ÀÌ´õ³Ý ¼öÁØÀÇ ¼Óµµ¸¦ ³»´Â ¹ö½ºÀÌ´Ù. ¾ó¸¶³ª ¸¹Àº ÄÄÇ»Å͵éÀÌ ¼­·Î USB¸¦ »ç¿ëÇؼ­ ¿¬°áµÉ ¼ö ÀÖ´ÂÁö´Â ½ÇÁ¦ ¸íÈ®ÇÏÁö ¾Ê´Ù. ¾î·µç USB Æ÷Æ®µéÀº Áö±Ý ºü¸£°Ô RS232¿Í SPP¿Í °°Àº PC ¸¶´õº¸µåÀÇ Ç¥ÁØÀÌ µÇ¾î°¡°í ÀÖ´Ù. ±×·¯¹Ç·Î ¿©·¯ºÐÀÌ ±¸¸ÅÇÑ Â÷±â PCÀÇ µÚÆí¿¡ USB Æ÷Æ®µéÀÌ ¼û¾î ÀÖ´õ¶óµµ ³î¶óÁö ¸»±â ¹Ù¶õ´Ù. ¸®´ª½º µå¶óÀ̹ö °³¹ßÀº ¿¡¼­ ³íÀǵǰí ÀÖ´Ù. ¿©·¯°¡Áö Á¡¿¡¼­ USB´Â °ÅÀÇ ¿©·¯ºÐÀÌ ÇöÀç ±¸¸ÅÇÒ ¼ö ÀÖ´Â, ³·Àº-¼º´É, Á¦·Î-ºñ¿ë(zero-cost)ÀÎ FireWire ¹öÀüÀÌ´Ù. 3.2.21. WAPERS o ¸®´ª½º Áö¿ø: AFAPI library o ÃÖ´ë ´ë¿ªÆø: 0.4 Mb/s o ÃÖ¼Ò Áöü: 3 microseconds o ±¸ÀÔ ¹æ¹ý: public-domain design o »ç¿ëµÈ ÀÎÅÍÆäÀ̽º/¹ö½º: SPP o ³×Æ®¿÷ ±¸Á¶: wiring pattern between 2-64 machines o ±â°è´ç ºñ¿ë: $5 WAPERS (º´·Ä ½ÇÇà°ú ºü¸¥ µ¿±âÈ­¸¦ À§ÇÑ Wired-AND ¾Æ´äÅÍ; Wired-AND Adapter for Parallel Execution and Rapid Synchronization)´Â ÆÛµà ´ëÇб³ÀÇ ÀüÀÚ ÄÄÇ»ÅÍ °øÇÐ Çб³¿¡¼­ ¼öÇà ÁßÀÎ PAPERS ÇÁ·ÎÁ§Æ®, ÀÇ ºÎ»ê¹°ÀÌ´Ù. ÀûÀýÇÏ°Ô ±¸ÇöµÈ´Ù¸é SPP´Â 4-ºñÆ® Æø wired AND¸¦ ±¸ÇöÇϱâ À§Çؼ­ ±â°èµé °£ ¼­·Î ¹­ÀÏ ¼ö ÀÖ´Â 4ºñÆ® ¿ÀÇÂ-ÄÝ·ºÅÍ Ãâ·ÂÀ» °¡Áø´Ù. ÀÌ wired-AND´Â ÀüÀÚ°øÇÐÀûÀ¸·Î ´Ù·ç±â ¾î·Á¿î °ÍÀÌ°í ÀÌ·± ½ÄÀ¸·Î ¿¬°áµÉ ¼ö ÀÖ´Â ±â°èµéÀÇ ÃÖ´ë °³¼ö´Â Æ÷Æ®ÀÇ ¾Æ³¯·Î±× Ư¼º¿¡ Á¾¼ÓÀûÀÌ´Ù(ÃÖ´ë ¼ö½Å Àü·ù(sink current)¿Í ÈÞ½Ä ·¹Áö½ºÅÍ(pull-up register) °ª); ÀüÇüÀûÀ¸·Î 7°³ ³»Áö 8°³ ±â°èµéÀÌ WAPERS·Î ³×Æ®¿öÅ·µÉ ¼ö ÀÖ´Ù. ºñ·Ï ºñ¿ë°ú Áöü½Ã°£ÀÌ ¾ÆÁÖ ³·Áö¸¸, ±×·¡¼­ ´ë¿ªÆøµµ ³·´Ù; WAPERS´Â Ŭ·¯½ºÅÍ¿¡¼­ ´ÜÀÏ ³×Æ®¿÷À¸·Î½á°¡ ¾Æ´Ï¶ó ÁýÇÕ ÀÛ¾÷µé¿¡ ´ëÇÑ µÎ¹ø° ³×Æ®¿÷À¸·Î½á ÈξÀ ´õ ÁÁ´Ù. TTL_PAPERS¿Í ÇÔ²², ½Ã½ºÅÛ º¸¾ÈÀ» ³ôÀ̱â À§Çؼ­, ¹Ýµå½Ã ÇÊ¿äÇÏÁö´Â ¾ÊÁö¸¸ ±Ç°íµÇ´Â ¸¶ÀÌ³Ê Ä¿³Î ÆÐÄ¡°¡ ÀÖ´Ù: . 3.3. ³×Æ®¿÷ ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍÆäÀ̽º(Network Software Interface) º´·Ä ¾îÇø®ÄÉÀ̼ǵéÀ» Áö¿øÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ³íÀÇÇϱâ ÀÌÀü¿¡ ³×Æ®¿÷ Çϵå¿þ¾î¿¡ ´ëÇÑ ·Î¿ì-·¹º§ ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍÆäÀ̽ºÀÇ ±âº»À» °£´ÜÈ÷ ¸ÕÀú ¾ê±âÇÏ´Â °ÍÀÌ À¯¿ëÇÏ´Ù. ½ÇÁ¦·Î 3°¡Áö ±âº» ¼±Åø¸ Á¸ÀçÇÑ´Ù: ¼ÒÄÏ, ÀåÄ¡ ±¸µ¿±â(device drivers), ±×¸®°í À¯Àú-·¹º§ ¶óÀ̺귯¸®. 3.3.1. ¼ÒÄÏ Áö±Ý±îÁö °¡Àå ÀϹÝÀûÀÎ ·Î¿ì-·¹º§ ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º´Â ¼ÒÄÏ ÀÎÅÍÆäÀ̽ºÀÌ´Ù. ¼ÒÄÏÀº Áö³­ 10³â°£ À¯´Ð½ºÀÇ ÀϺο´°í ´ëºÎºÐÀÇ Ç¥ÁØ ³×Æ®¿÷ Çϵå¿þ¾î´Â Àû¾îµµ µÎ°¡Áö ŸÀÔÀÇ ¼ÒÄÏ ÇÁ·ÎÅäÄݵé: UPD¿Í TCP¸¦ Áö¿øÇϵµ·Ï ¼³°èµÈ °ÍÀÌ´Ù. µÎ ¼ÒÄÏ Å¸ÀÔµéÀº ÇÑ ±â°è¿¡¼­ ´Ù¸¥ °ÍÀ¸·Î ÀÓÀÇ Å©±âÀÇ µ¥ÀÌÅÍ ºí·°À» Àü¼ÛÇÒ ¼ö ÀÖµµ·Ï ÇÏÁö¸¸ ¸î°¡Áö Áß¿äÇÑ Â÷ÀÌ°¡ ÀÖ´Ù. ºñ·Ï ¼º´ÉÀº ³×Æ®¿÷ Æ®·¡ÇÈ¿¡ µû¶ó¼­ ÈξÀ ¾ÇÈ­µÉ ¼ö ÀÖÁö¸¸ ÀüÇüÀûÀ¸·Î ÀÌ µÎ°¡Áö´Â ¾à 1,000 ¸¶ÀÌÅ©·Î ÃÊ Á¤µµÀÇ ÃÖ¼Ò Áöü¸¦ ¸¸µç´Ù. ÀÌ·± ¼ÒÄÏ Å¸ÀÔµéÀº ´ëºÎºÐÀÇ ÀÌ½Ä °¡´É, ÇÏÀÌ-·¹º§, º´·Ä ó¸® ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ±âº» ³×Æ®¿÷ ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍÆäÀ̽ºÀÌ´Ù; ¿¹¸¦ µé¾î¼­ PVMÀº UDP¿Í TCP¸¦ È¥ÇÕÇÏ¿© »ç¿ëÇϱ⠶§¹®¿¡ ÀÌ µÑÀÇ Â÷ÀÌÁ¡À» ¾Æ´Â °ÍÀº ¼º´ÉÀ» Æ©´×ÇÏ´Â µ¥ µµ¿òÀ» ÁÙ °ÍÀÌ´Ù. Á» ´õ ³ªÀº ¼º´ÉÀ» À§Çؼ­ ÇÁ·Î±×·¥ ¾È¿¡¼­ Á÷Á¢ ÀÌ·± ¸ÞÄ«´ÏÁòµéÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ¸Àº UDP¿Í TCPÀÇ ´Ü¼øÇÑ °³°üÀÌ´Ù; ÀÚ¼¼ÇÑ ³»¿ëÀº ¸Å´º¾ó ÆäÀÌÁöµé°ú ÁÁÀº ³×Æ®¿÷ ÇÁ·Î±×·¡¹Ö Ã¥À» º¸±â ¹Ù¶õ´Ù. 3.3.1.1. UDP ÇÁ·ÎÅäÄÝ (SOCK_DGRAM) UDP´Â »ç¿ëÀÚ µ¥ÀÌÅͱ׷¥ ÇÁ·ÎÅäÄÝ(User Datagram Protocol)ÀÌÁö¸¸ UDPÀÇ ¼Ó¼ºÀ» ½Å·ÚÇÒ ¼ö ¾ø´Â µ¥ÀÌÅͱ׷¥ ó¸®(Unreliable Datagram Processing)·Î Á» ´õ ½±°Ô ±â¾ïÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´Ù¸¥ ¸»·Î Çؼ­ UDP´Â °¢ ºí·°ÀÌ °³º° ¸Þ½ÃÁö·Î Àü¼ÛµÇµµ·Ï Çã¶ôÇÏÁö¸¸ ¸Þ½ÃÁö´Â Àü¼Û Áß À¯½ÇµÉ ¼ö ÀÖ´Ù. »ç½Ç ³×Æ®¿÷ Æ®·¡ÇÈ¿¡ Á¾¼ÓÀûÀ¸·Î UDP ¸Þ½ÃÁöµéÀº À¯½ÇµÉ ¼ö ÀÖ°í ¿©·¯¹ø µµÂøÇÒ ¼ö Àְųª ±×µéÀÌ º¸³»Áø ¼ø¼­¿Í ´Ù¸¥ ¼ø¼­·Î µµÂøÇÒ ¼ö ÀÖ´Ù. UDP ¸Þ½ÃÁöÀÇ Àü¼ÛÀÚ´Â ÀÚµ¿À¸·Î ¹Þ¾Ò´Ù´Â ÅëÁö(acknowledgement)¸¦ ¹ÞÁö ¾Ê´Â´Ù. ±×·¡¼­ ÀÌ·± ¹®Á¦µéÀ» °ËÃâÇÏ°í º¸ÃæÇÏ´Â °ÍÀº »ç¿ëÀÚ°¡ ÀÛ¼ºÇÑ Äڵ忡 ÀÇÁ¸ÇÑ´Ù. ´ÙÇེ·´°Ôµµ UDP´Â ¸Þ½ÃÁö°¡ µµÂøÇß´Ù¸é ¹ÞÀº ¸Þ½ÃÁö°¡ ¼Õ»óµÈ °ÍÀÌ ¾Æ´Ï°í ¿ÏÀüÇÑ °ÍÀ̶ó°í(Áï, UDP ¸Þ½ÃÁö Á¶°¢¸¸ ¹Þ¾Ò´Ù°í) º¸ÀåÇÑ´Ù. UDP°¡ ÁÁÀº Á¡Àº °¡Àå ºü¸¥ ¼ÒÄÏ ÇÁ·ÎÅäÄÝÀÌ µÇ·Á°í ÇÑ´Ù´Â °ÍÀÌ´Ù. ´õ ³ª¾Æ°¡ UDP´Â "¿¬°á ¾ø´Â(connectionless)" °ÍÀÌ´Ù. ÀÌ°ÍÀº °¢ ¸Þ½ÃÁö°¡ ±âº»ÀûÀ¸·Î ¸ðµç ´Ù¸¥ °Íµé°ú µ¶¸³ÀÌ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌ°Í¿¡ ´ëÇÑ ÁÁÀº ºñÀ¯´Â ÆíÁöÀÌ´Ù; ¿©·¯ºÐÀº µ¿ÀÏÇÑ ÁýÁÖ¼Ò·Î ¿©·¯ ÆíÁö¸¦ º¸³¾ ¼ö ÀÖÁö¸¸ °¢°¢Àº ´Ù¸¥ °Íµé°ú µ¶¸³ÀÌ¸ç ¿©·¯ºÐÀÌ ÆíÁö¸¦ º¸³¾ ¼ö ÀÖ´Â »ç¶÷ÀÇ ¼ö¿¡ ´ëÇÑ Á¦ÇÑÀÌ ¾ø´Ù. 3.3.1.2. TCP ÇÁ·ÎÅäÄÝ(SOCK_STREAM) UDP¿Í ´Ù¸£°Ô TCP´Â ½Å·ÚÇÒ ¼ö ÀÖ°í, ¿¬°á-±â¹ÝÀÎ ÇÁ·ÎÅäÄÝÀÌ´Ù. º¸³»Áø °¢ ºí·°Àº ¸Þ½ÃÁö·Î º¸ÀÌÁö ¾Ê°í °Ñº¸±â¿¡ Àü¼ÛÀÚ¿Í ¼ö½ÅÀÚ »çÀÌÀÇ ¿¬°áÀ» ÅëÇؼ­ Àü¼ÛµÈ ¿¬¼ÓÀûÀÎ ¹ÙÀÌÆ®¾È¿¡¼­ µ¥ÀÌÅÍ ºí·°À¸·Î º¸ÀδÙ. ÀÌ°ÍÀº UDP ¸Þ½Ã¡°ú ¾ÆÁÖ ´Ù¸£´Ù. ¿Ö³Ä¸é °¢ ºí·°Àº ´Ü¼øÇÏ°Ô ¹ÙÀÌÆ® ½ºÆ®¸²ÀÇ ÀϺÎÀÌ°í °¢ ºí·°À» ¹ÙÀÌÆ® ½ºÆ®¸²¿¡¼­ ÃßÃâÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æ ³»´Â °ÍÀº »ç¿ëÀÚ Äڵ忡 Á¾¼ÓÀûÀ̱⠶§¹®ÀÌ´Ù; ¸Þ½ÃÁöµéÀ» ºÐ¸®ÇÏ´Â ¸¶Å·Àº ¾ø´Ù. ´õ ³ª¾Æ°¡ ³×Æ®¿÷ ¹®Á¦µé¿¡ ´ëÇؼ­ ¿¬°áÀº Á» ´õ ±úÁö±â ½¬¿î °ÍÀÌ°í ¿¬°áÀÇ Á¦ÇÑµÈ °³¼öµé¸¸ÀÌ °¢ ÇÁ·Î¼¼½ºµé¿¡ ´ëÇؼ­ µ¿½Ã¿¡ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ½Å·ÚÇÒ ¼ö Àֱ⠶§¹®¿¡ TCP´Â ÀϹÝÀûÀ¸·Î UDPº¸´Ù Á» ´õ ¹«°Å¿î ¿À¹öÇìµå¸¦ °¡Áø´Ù. ±×·¯³ª TCP¿¡ °üÇÑ ¸î°¡Áö Áñ°Å¿î ³î¶ó¿î °ÍµéÀÌ Á¸ÀçÇÑ´Ù. ´Ù¼ö ¸Þ½ÃÁöµéÀÌ ¿¬°áÀ» ÅëÇؼ­ Àü´ÞµÇ¾ú´Ù¸é, ªÀº ¶Ç´Â ¦ÀÌ ¸ÂÁö ¾ÊÀº Å©±âÀÇ ¸Þ½ÃÁöµéÀÇ ±×·ì¿¡ ´ëÇؼ­ UDPº¸´Ù ´õ ³ªÀº ¼º´ÉÀ» ÀáÀçÀûÀ¸·Î ³»¸é¼­, TCP´Â ±×°ÍµéÀ» ¹öÆÛ ¾È¿¡¼­ ³×Æ®¿÷ Çϵå¿þ¾î ÆÐŶ Å©±â¿¡ ´õ Àß ¸Âµµ·Ï ¹­À» ¼ö ÀÖ´Ù´Â °ÍÀÌ Ã¹¹ø°ÀÌ´Ù. ´Ù¸¥ º¸³Ê½º´Â ±â°èµé °£¿¡ ½Å·ÚÇÒ ¼ö ÀÖ´Â Á÷Á¢ ¹°¸®Àû ¸µÅ©µéÀ» »ç¿ëÇؼ­ ±¸ÃàµÈ ³×Æ®¿÷Àº TCP ¿¬°áÀ» ½±°í È¿À²ÀûÀ¸·Î Èä³»³¾ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­ ParaStationÀÇ "Socket Library" ÀÎÅÍÆäÀ̽º ¼ÒÇÁÆ®¿þ¾îÀÇ °æ¿ì ÀÌ·¸°Ô µÇ¾ú´Ù. ÀÌ ¼ÒÇÁÆ®¿þ¾î´Â Ç¥ÁØ TCP OS È£Ãâµé°ú °¢ ÇÔ¼ö À̸§¿¡´Ù Á¢µÎ»ç PSS¸¦ ºÙÀÌ´Â °Í¸¸ ´Ù¸¥ »ç¿ëÀÚ-·¹º§ È£ÃâµéÀ» »ç¿ëÇÑ TCP ¹®¹ý(semantics)À» Á¦°øÇÑ´Ù. 3.3.2. ÀåÄ¡ ±¸µ¿±â(Device Drivers) ³×Æ®¿÷¿¡ µ¥ÀÌÅ͸¦ ½ÇÁ¦·Î ³ÖÀ» ¶§°¡, ¶Ç´Â ³×Æ®¿÷À¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ²ôÁý¾î ¿Ã ¶§°¡ ¿À¸é Ç¥ÁØ À¯´Ð½º ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍÆäÀ̽º´Â ÀåÄ¡ ±¸µ¿±â¶ó°í ºÒ¸®´Â À¯´Ð½º Ä¿³ÎÀÇ ÀϺΰ¡ µÈ´Ù. UDP¿Í TCP´Â ´ÜÁö µ¥ÀÌÅ͸¸ Àü¼ÛÇÏÁö ¾Ê°í ±×µéÀº ¶ÇÇÑ »ó´çÇÑ ¾çÀÇ ¼ÒÄÏ °ü¸®ÀÇ ¿À¹öÇìµå¸¦ °®°í ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ¾î¶² °ÍµéÀº ´Ù¼öÀÇ TCP Ä¿³Ø¼ÇµéÀÌ ÇϳªÀÇ ¹°¸®Àû ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º¸¦ °øÀ¯ÇÒ ¼ö ÀÖ´Ù´Â »ç½ÇÀ» °ü¸®ÇØ¾ß ÇÑ´Ù. ÀÌ¿¡ ºñÇؼ­ Àü¿ë ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ÀåÄ¡ ±¸µ¿±â´Â ´ÜÁö ¸î°¡Áö ´Ü¼øÇÑ µ¥ÀÌÅÍ Àü¼Û ÇÔ¼öµé¸¸ ±¸ÇöÇÏ¸é µÈ´Ù. ÀÌ·± ÀåÄ¡ µå¶ó¤·À̹ö ÇÔ¼öµéÀº »ç¿ëÀÚ ÇÁ·Î±×·¥¿¡ ÀÇÇؼ­, ÀûÀýÇÑ ÀåÄ¡¸¦ È®ÀÎÇϱâ À§Çؼ­ open()À» »ç¿ëÇÏ°í ¿ÀÇÂµÈ "ÆÄÀÏ"¿¡ ´ëÇؼ­ read()¿Í write()¿Í °°Àº ½Ã½ºÅÛ È£ÃâÀ» »ç¿ëÇÔÀ¸·Î½á, È£ÃâµÉ ¼ö ÀÖ´Ù. ±×·¡¼­ °¢°¢ÀÇ ±×·± ÀÛ¾÷Àº µ¥ÀÌÅÍ ºí·°À» ½Ã½ºÅÛ È£ÃâÀÇ ¿À¹öÇìµåº¸´Ù ´õ ÀÛÀº ¿À¹öÇìµå·Î Àü¼ÛÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ½Ã½ºÅÛ È£ÃâÀº ¼ö½Ê ¸¶ÀÌÅ©·Î ÃÊ°¡ °É¸°´Ù. ¸®´ª½º¿¡ ´ëÇÑ ÀåÄ¡ ±¸µ¿±â¸¦ ÀÛ¼ºÇÏ´Â °ÍÀº ¾î·ÆÁö ¾Ê´Ù... ÀåÄ¡ Çϵå¿þ¾î°¡ ÀÛµ¿ÇÏ´Â ¹æ¹ýÀ» Á¤È®ÇÏ°Ô ¾Ë°í ÀÖ´Ù¸é ¸»ÀÌ´Ù. ÀÌ°ÍÀÌ ÀÛµ¿ÇÏ´Â ¹æ¹ýÀ» ¸ð¸¥´Ù¸é ÃßÃøÇÏÁö ¸»¶ó. ÀåÄ¡ µå¶óÀ̹ö¸¦ µð¹ö±ëÇÏ´Â °ÍÀº Áñ°ÌÁö ¾ÊÀº ÀÏÀÌ°í ½Ç¼öµéÀº Çϵå¿þ¾î¸¦ Å¿ö¸ÔÀ» ¼ö ÀÖ´Ù. ±×·¯³ª ÀÌ°ÍÀÌ ¿©·¯ºÐÀ» ±×·¸°Ô °ÌÁÖ´Â °ÍÀÌ ¾Æ´Ï¶ó¸é, ¿¹¸¦ µé¾î¼­ Àü¿ë ÀÌ´õ³Ý Ä«µå¸¦ ´õ¹Ì·Î ±×·¯³ª ÀϹÝÀûÀÎ ÀÌ´õ³Ý ÇÁ·ÎÅäÄÝ ¿À¹öÇìµå ¾øÀÌ ±â°è-´ë-±â°è ºü¸¥ Á÷Á¢ ¿¬°á·Î »ç¿ëÇϱâ À§Çؼ­, ÀåÄ¡ ±¸µ¿±â¸¦ ÀÛ¼ºÇÏ´Â °ÍÀº °¡´ÉÇÑ ÀÏÀÌ µÉ ¼ö ÀÖ´Ù. »ç½Ç Ãʱâ ÀÎÅÚ ½´ÆÛÄÄÇ»Å͵éÀÌ Çß´ø °Í°ú »ó´çÈ÷ À¯»çÇÏ´Ù.... Á» ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ º¸°í ½Í´Ù¸é Device Driver HOWTO¸¦ º¸¶ó. 3.3.3. »ç¿ëÀÚ-·¹º§ ¶óÀ̺귯¸®(User-Level Libraries) ¿©·¯ºÐÀÌ OS ÄÚ½º¸¦ ÅÃÇß´Ù¸é Çϵå¿þ¾î ÀåÄ¡ ·¹Áö½ºÅÍ¿¡ ´ëÇÑ »ç¿ëÀÚ-·¹º§ ¾ï¼¼½º´Â Á¤È®È÷ ¿©·¯ºÐÀÌ Çѹøµµ ¹è¿î ÀûÀÌ ¾ø´Â °ÍÀÌ´Ù. ¿Ö³Ä¸é OSÀÇ ÁÖ¿ä ¸ñÀû Áß Çϳª´Â ÀåÄ¡ ¾ï¼¼½º¸¦ Á¦¾îÇÏ´Â °ÍÀ̱⠶§¹®ÀÌ´Ù. ±×·¯³ª OS È£ÃâÀº Àû¾îµµ ¼ö½Ê ¸¶ÀÌÅ©·Î ÃÊ ¿À¹öÇìµå°¡ °É¸°´Ù. ´ÜÁö 3 ¸¶ÀÌÅ©·Î ÃÊ µ¿¾È¿¡ ±âº» ³×Æ®¿÷ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Â TTL_PAPERS¿Í °°Àº Ä¿½ºÅÒ ³×Æ®¿÷ Çϵå¿þ¾îÀÇ °æ¿ì ±×·± OS È£Ãâ ¿À¹öÇìµå´Â ÂüÀ» ¼ö ¾ø´Â °ÍÀÌ´Ù. ±×·± ¿À¹öÇìµå¸¦ ÇÇÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº Çϵå¿þ¾î ÀåÄ¡ ·¹Áö½ºÅ͵éÀ» Á÷Á¢ ¾ï¼¼½ºÇÏ´Â »ç¿ëÀÚ-·¹º§ ÄÚµå - »ç¿ëÀÚ-·¹º§ ¶óÀ̺귯¸® - ¸¦ °¡Áö´Â °ÍÀÌ´Ù. ±×·¡¼­ »ç¿ëÀÚ-·¹º§ ¶óÀ̺귯¸®°¡ Çϵå¿þ¾î¸¦ Á÷Á¢ ¾ï¼¼½ºÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¹«¾ùÀΰ¡, ÇÏÁö¸¸ ÀåÄ¡ ¾ï¼¼½º ±ÇÇÑ¿¡ ´ëÇÑ OS Á¦¾î¿Í ŸÇùÇÏÁö ¾Ê´Â ¹æ¹ýÀº ¹«¾ùÀΰ¡¿Í °°Àº °ÍÀÌ Áú¹®ÀÌ µÉ °ÍÀÌ´Ù. ÀüÇüÀûÀÎ ½Ã½ºÅÛ¿¡¼­ »ç¿ëÀÚ-·¹º§ ¶óÀ̺귯¸®°¡ Çϵå¿þ¾î ÀåÄ¡ ·¹Áö½ºÅ͸¦ Á÷Á¢ ¾ï¼¼½ºÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù: 1. »ç¿ëÀÚ ÇÁ·Î±×·¥ ½ÃÀÛ¿¡¼­ ÀåÄ¡ ·¹Áö½ºÅ͸¦ Æ÷ÇÔÇÏ´Â ¸Þ¸ð¸® ÁÖ¼Ò °ø°£À» »ç¿ëÀÚ ÇÁ·Î¼¼½º °¡»ó ¸Þ¸ð¸® ¸ÊÀ¸·Î ¸ÊÇÎÇÏ´Â OS È£ÃâÀ» »ç¿ëÇÑ´Ù. ¾î¶² ½Ã½ºÅ۵鿡¼­´Â mmap() È£Ãâ(¼½¼Ç ``¸Þ¸ð¸® ¸Ê È£Ãâ'' ¿¡¼­ ¸ÇóÀ½ ¾ð±ÞµÊ)ÀÌ I/O ÀåÄ¡µéÀÇ ¹°¸®Àû ¸Þ¸ð¸® ÆäÀÌÁö ÁÖ¼ÒµéÀÇ Ç¥ÇöÇϴ Ư¼ö ÆÄÀÏÀ» ¸ÊÇÎÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¶Ç´Â ÀÌ·± ±â´ÉÀ» ¼öÇàÇÏ´Â ÀåÄ¡ ±¸µ¿±â¸¦ ÀÛ¼ºÇÏ´Â ÀÏÀº »ó´ëÀûÀ¸·Î ½±´Ù. ´õ ³ª¾Æ°¡ ÀÌ ÀåÄ¡ ±¸µ¿±â´Â ÇÊ¿äÇÑ Æ¯Á¤ ÀåÄ¡ ·¹Áö½ºÅ͵éÀ» ´ã°í ÀÖ´Â ÆäÀÌÁö(µé)À» ¸ÊÇÎÇÏ´Â °Í¸¸À¸·Î ¾ï¼¼½º¸¦ Á¦¾îÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ OS ¾ï¼¼½º Á¦¾î¸¦ À¯ÁöÇÒ ¼ö ÀÖ´Ù. 2. ¸ÊÇÎµÈ Áּҵ鿡 ´Ü¼øÇÏ°Ô ·ÎµùÇϰųª ÀúÀåÇÔÀ¸·Î½á OS È£Ãâ ¾øÀÌ ÀåÄ¡ ·¹Áö½ºÅ͵éÀ» ¾ï¼¼½º. ¿¹¸¦ µé¾î¼­ *((char *) 0x1234) = 5;´Â ¸Þ¸ð¸® À§Ä¡ 1234(16Áø¼ö)¿¡´Ù ¹ÙÀÌÆ® °ª 5¸¦ ÀúÀåÇÒ °ÍÀÌ´Ù. ´ÙÇེ·´°Ôµµ ÀÎÅÚ 386(±×¸®°í ȣȯ ÇÁ·Î¼¼½ºµé)¿¡ ´ëÇÑ ¸®´ª½º°¡ Á» ´õ ³ªÀº ¼Ö·ç¼ÇÀ» Á¦°øÇÏ´Â ÀÏÀÌ ¹ú¾îÁ³´Ù: 1. ±ÇÇÑÀÌ ÀÖ´Â ÇÁ·Î¼¼½º·ÎºÎÅÍ ioperm() OS È£ÃâÀ» »ç¿ëÇÔÀ¸·Î½á ÀåÄ¡ ·¹Áö½ºÅÍ¿¡ ´ëÀÀÇÏ´Â Á¤È®ÇÑ I/O Æ÷Æ® Áּҵ鿡 ¾ï¼¼½ºÇÏ´Â Æ۹̼ÇÀ» ¾ò´Â´Ù. ¶Ç´Â ¸®´ª½º¿¡ ´ëÇÑ ÆÐÄ¡ À» »ç¿ëÇÏ¿© µ¶¸³µÈ ±ÇÇÑÀÖ´Â »ç¿ëÀÚ ÇÁ·Î¼¼½º(Áï, "¸ÞŸ OS")¿¡ ÀÇÇؼ­ Æ۹̼ÇÀÌ °ü¸®µÉ ¼ö ÀÖ´Ù. 2. 386 Æ÷Æ® I/O ¸í·É¾îµéÀ» »ç¿ëÇؼ­ OS È£Ãâ ¾øÀÌ ÀåÄ¡ ·¹Áö½ºÅ͵éÀ» ¾ï¼¼½º. ´Ù¼öÀÇ I/O ÀåÄ¡µéÀÌ ´ÜÀÏ ÆäÀÌÁö ¾È¿¡ ±×µéÀÇ ·¹Áö½ºÅ͸¦ °®´Â °ÍÀÌ ÀϹÝÀûÀ̱⠶§¹®¿¡ ÀÌ µÎ¹ø° ¼Ö·ç¼ÇÀÌ ´õ ¼±È£µÈ´Ù. ÀÌ·± °æ¿ì ù¹ø° ±â¼úÀº ÀǵµµÈ °Í°ú µ¿ÀÏÇÑ ÆäÀÌÁö¿¡ À§Ä¡ÇÏ°Ô µÈ ´Ù¸¥ ÀåÄ¡ ·¹Áö½ºÅ͵éÀ» ¾ï¼¼½ºÇÏÁö ¸øÇϵµ·Ï ÇÏ´Â º¸È£¸¦ Á¦°øÇÏÁö ¸øÇÒ °ÍÀÌ´Ù. ¹°·Ð 386 Æ÷Æ® I/O ¸í·ÉµéÀÌ C·Î ÄÚµùµÉ ¼ö ¾ø´Ù´Â °ÍÀÌ ´ÜÁ¡ÀÌ´Ù - ´ë½Å ¿©·¯ºÐÀº ¾à°£ÀÇ ¾î¼Àºí¸® Äڵ带 »ç¿ëÇÒ ÇÊ¿ä°¡ »ý±æ °ÍÀÌ´Ù. ¹ÙÀÌÆ® °ªÀÇ Æ÷Æ® ÀÔ·ÂÀ» À§ÇÑ GCC-·¦ÇεÈ(C ÇÁ·Î±×·¥¿¡¼­ »ç¿ë °¡´ÉÇÑ) ÀζóÀÎ ¾î¼Àºí¸® ÄÚµå ÇÔ¼ö´Â ´ÙÀ½°ú °°´Ù: ______________________________________________________________________ extern inline unsigned char inb(unsigned short port) { unsigned char _v; __asm__ __volatile__ ("inb %w1,%b0" :"=a" (_v) :"d" (port), "0" (0)); return _v; } ______________________________________________________________________ ºñ½ÁÇÏ°Ô ¹ÙÀÌÆ® Æ÷Æ® Ãâ·ÂÀ» À§ÇÑ GCC-·¦ÇÎµÈ ÄÚµå´Â ´ÙÀ½°ú °°´Ù: ______________________________________________________________________ extern inline void outb(unsigned char value, unsigned short port) { __asm__ __volatile__ ("outb %b0,%w1" :/* no outputs */ :"a" (value), "d" (port)); } ______________________________________________________________________ 3.4. PVM (º´·Ä °¡»ó ±â°è, Parallel Virtual Machine) PVM(º´·Ä °¡»ó ±â°è)´Â ÀϹÝÀûÀ¸·Î ¼ÒÄÏ À§¿¡ ±¸ÇöµÈ, ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ°í ÀÌ½ÄµÉ ¼ö ÀÖ´Â ¸Þ½ÃÁö Àü´Þ ¶óÀ̺귯¸®ÀÌ´Ù. ÀÌ°ÍÀº ºÐ¸íÈ÷ ¸Þ½ÃÁö Àü´Þ Ŭ·¯½ºÅÍ º´·Ä ÄÄÇ»ÆÃÀ» À§ÇÑ »ç½Ç»óÀÇ Ç¥ÁØÀ¸·Î ÀÚ¸®¸¦ Àâ¾Ò´Ù. PVMÀº ´ÜÀÏ-ÇÁ·Î¼¼¼­¿Í SMP ¸®´ª½º ±â°èµé, ±×¸®°í ¼ÒÄÏ-°¡´É ³×Æ®¿÷(¿¹, SLIP, PLIP, ÀÌ´õ³Ý, ATM)¿¡ ÀÇÇؼ­ ¸µÅ©µÈ ¸®´ª½º ±â°èµéÀÇ Å¬·¯½ºÅ͸¦ Áö¿øÇÑ´Ù. »ç½Ç PVMÀº ´Ù¾çÇÑ ¼­·Î ´Ù¸¥ ŸÀÔµéÀÇ ÇÁ·Î¼¼¼­µé, ¼³Á¤, ±×¸®°í ¹°¸®ÀûÀÎ ³×Æ®¿÷µéÀÌ »ç¿ëµÈ ±â°èµé ±×·ì - À̱âÁ¾ Ŭ·¯½ºÅÍ -¿¡¼­ º´·Ä Ŭ·¯½ºÅͷνá ÀÎÅͳÝÀ» ÅëÇؼ­ ¸µÅ©µÈ ±â°èµéÀ» ó¸®ÇÏ´Â ¹üÀ§±îÁö ÀÛµ¿ÇÑ´Ù. PVMÀº ¶ÇÇÑ Å¬·¯½ºÅ͸¦ ÅëÇؼ­ º´·Ä ÀÛ¾÷ Á¦¾î¸¦ À§ÇÑ ±â´ÉµéÀ» Á¦°øÇÑ´Ù. À̵é Áß °¡Àå ÁÁÀº °Í, PVMÀº ¿À·§µ¿¾È ÀÚÀ¯·Ó°Ô »ç¿ë °¡´ÉÇÏ¿´°í(ÇöÀç´Â ¿¡ ÀÖÀ½) ¸¹Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î, ¾îÇø®ÄÉÀÌ¼Ç ¶óÀ̺귯¸®, µð¹ö±ë Åø µî°ú °°Àº °Í¿¡, ±×°ÍÀ» ±×µéÀÇ "ÀÌ½Ä °¡´ÉÇÑ ¸Þ½ÃÁö-Àü´Þ Ÿ°Ù ¶óÀ̺귯¸®"·Î »ç¿ëÇÏ¿©, À̸£°Ô µÇ¾ú´Ù. ³×Æ®¿÷ ´º½º ±×·ì comp.parallel.pvmÀÌ ÀÖ´Ù. ±×·¯³ª PVM ¸Þ½ÃÁö Àü´Þ È£ÃâµéÀº ÀϹÝÀûÀ¸·Î ÀÌ¹Ì ³ôÀº Áöü¸¦ °¡Áö´Â Ç¥ÁØ ¼ÒÄÏ ÀÛ¾÷µé¿¡ ½É°¢ÇÑ ¿À¹öÇìµå¸¦ Ãß°¡ÇÑ´Ù. ´õ ³ª°¡¾Æ°¡ ¸Þ½ÃÁö Çڵ鸵 È£Ãâµé ÀÚ½ÅÀº Ưº°È÷ "ÇÁ·»µé¸®"ÇÑ ÇÁ·Î±×·¡¹Ö ¸ðµ¨À» ÀÌ·çÁö ¾Ê¾Ò´Ù. ¼½¼Ç ``¿¹Á¦ ¾Ë°í¸®Áò''¿¡¼­ ¸ÇóÀ½ ¼³¸íµÈ °Í°ú µ¿ÀÏÇÑ ÆÄÀÌ(pi) °è»ê ¿¹Á¦¸¦ »ç¿ëÇؼ­ ¸¸µç, C¿Í PVM ¶óÀ̺귯¸® È£ÃâÀ» »ç¿ëÇÑ ¹öÀüÀº ´ÙÀ½°ú °°´Ù: ______________________________________________________________________ #include #include #include #define NPROC 4 main(int argc, char **argv) { register double lsum, width; double sum; register int intervals, i; int mytid, iproc, msgtag = 4; int tids[NPROC]; /* array of task ids */ /* enroll in pvm */ mytid = pvm_mytid(); /* Join a group and, if I am the first instance, iproc=0, spawn more copies of myself */ iproc = pvm_joingroup("pi"); if (iproc == 0) { tids[0] = pvm_mytid(); pvm_spawn("pvm_pi", &argv[1], 0, NULL, NPROC-1, &tids[1]); } /* make sure all processes are here */ pvm_barrier("pi", NPROC); /* get the number of intervals */ intervals = atoi(argv[1]); width = 1.0 / intervals; lsum = 0.0; for (i = iproc; iÀÌ¸ç ´º½º±×·ìÀº comp.paralle.mpiÀÌ´Ù. ±×·¯³ª MPI¸¦ ³íÀÇÇϱâ Àü¿¡ ÀúÀÚ´Â Áö³­ ¸î³â µ¿¾È ÀϾ PVM ´ë MPI Á¾±³ ÀüÀï¿¡ ´ëÇؼ­ Á¶±Ý ¾ê±âÇÏ°í ½ÍÀº Ã浿À» ´À³¤´Ù. ´ÙÀ½Àº Â÷ÀÌÁ¡µé¿¡ ´ëÇؼ­ »ó´ëÀûÀ¸·Î Æí°ß¾øÀÌ ¿ä¾àÇÏ·Á°í ½ÃµµÇÑ °ÍÀÌ´Ù: ½ÇÇà Á¦¾î ȯ°æ(Execution control environment). ´Ü¼øÇÏ°Ô ¾ê±âÇؼ­ MPI´Â ½ÇÇà Á¦¾î ȯ°æÀÌ ¾î¶»°Ô ±¸ÇöµÇ´Â°¡¿Í ±¸ÇöµÉ ¼ö ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀº ¹Ý¸é PVMÀº ½ÇÇà Á¦¾î ȯ°æ Çϳª¸¦ °®´Â´Ù. ±×·¡¼­ PVM ÇÁ·Î±×·¥ ½ÇÇàÀ» ½ÃÀÛÇÏ´Â °Í°ú °°Àº ÀϵéÀº ¸ðµç °÷¿¡¼­ µ¿ÀÏÇÏ°Ô ÀÌ·ç¾îÁö´Â ¹Ý¸é MPIÀÇ °æ¿ì ÀÌ°ÍÀº ¾î¶² ±¸ÇöÀÌ »ç¿ëµÇ´Â°¡¿¡ µû¶ó¼­ ´Ù¸¦ ¼ö ÀÖ´Ù. À̱âÁ¾ Ŭ·¯½ºÅÍ Áö¿ø(Support for heterogeneous clusters). PVMÀº ¿öÅ©½ºÅ×ÀÌ¼Ç »çÀÌŬ-È°¿ë ¼¼°è¿¡¼­ ÀÚ¶ó³µ°í ±×·¡¼­ Á÷Á¢ ±â°è¿Í ¿î¿µ üÁ¦ÀÇ À̱âÁ¾ È¥ÇÕÀ» °ü¸®ÇÑ´Ù. ¹Ý¸é¿¡ MPI´Â Ÿ°ÙÀÌ MPP(°Å´ëÇÑ º´·Ä ÇÁ·Î¼¼¼­)À̰ųª °ÅÀÇ µ¿ÀÏÇÑ ¿öÅ©½ºÅ×À̼ǵéÀÇ Àü¿ë Ŭ·¯½ºÅÍÀÏ °ÍÀ̶ó°í °¡Á¤ÇÑ´Ù. ºÎ¾ý ½ÌÅ©´ë ÁõÈıº(Kitchen sink syndrome). PVM´Â MPI 2.0ÀÌ ÇÏÁö ¸øÇÏ´Â ¸ñÀûÀÇ ÅëÀÏÀ» Áõ¸íÇÑ´Ù. »õ·Î¿î MPI 2.0 Ç¥ÁØÀº ±âº» ¸Þ½ÃÁö Àü´Þ ¸ðµ¨À» ¹þ¾î³ª´Â ¸¹Àº ±â´ÉµéÀ» ´ã°í ÀÖ´Ù - RMA(¸®¸ðÆ® ¸Þ¸ð¸® ¾ï¼¼½º, Remote Memory Access)¿Í º´·Ä ÆÄÀÏ I/O¿Í °°Àº °Íµé. ÀÌ·± °ÍµéÀÌ À¯¿ëÇÑ°¡? ¹°·Ð ±×µéÀº ±×·¸´Ù... ±×·¯³ª MPI 2.0À» ¹è¿ì´Â °ÍÀº ¿ÏÀüÈ÷ »õ·Î¿î ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ¹è¿ì´Â °Í°ú °ÅÀÇ ¶È°°´Ù. »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ¼³°è(User interface design). MPI´Â PVMÀ» µû¶ó ¼³°èµÇ¾ú°í ºÐ¸íÈ÷ ±×°ÍÀ¸·ÎºÎÅÍ ¹è¿ü´Ù. MPI´Â ´õ ´Ü¼øÇÏ°í ´õ È¿°úÀûÀÎ ¹öÆÛ Çڵ鸵°ú ¸Þ½ÃÁö·Î »ç¿ëÀÚ-Á¤ÀÇ µ¥ÀÌÅÍ ±¸Á¶°¡ Àü´ÞµÇµµ·Ï ÇÏ´Â °í¼öÁØ Ãß»óÈ­¸¦ Á¦°øÇÑ´Ù. ¹ýÀÇ È¿·Â(The force of law). ³» °è»ê¿¡ ÀÇÇϸé MPI¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù PVMÀ» »ç¿ëÇϵµ·Ï ¼³°èµÈ °ÍµéÀÌ ¾ÆÁ÷ ¾ÆÁÖ ¸¹ÀÌ ÀÖ´Ù; ±×·¯³ª ±×°ÍµéÀ» MPI·Î Æ÷ÆÃÇÏ´Â °ÍÀº ½±´Ù. ±×¸®°í MPI°¡ ³Î¸® Áö¿øµÇ´Â Çü½ÄÀûÀΠǥÁØ¿¡ ÀÇÇؼ­ Áö¿øµÈ´Ù´Â »ç½ÇÀº MPI¸¦ »ç¿ëÇÏ´Â °ÍÀº ¸¹Àº ±â°üµéÀÇ °æ¿ì, Á¤Ã¥»óÀÇ ¹®Á¦ÀÌ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. °á·ÐÀÌ ³µ´Â°¡? ±Û½ê ¸®´ª½º ½Ã½ºÅÛµé·Î ¸¸µç Ŭ·¯½ºÅÍ¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖ´Â, ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ°í µ¶¸³ÀûÀ¸·Î °³¹ßµÈ MPI ¹öÀüÀº Àû¾îµµ ¼¼°¡Áö Á¸ÀçÇÑ´Ù(±×¸®°í ³ª´Â ±×°Íµé Áß Çϳª¸¦ ¿©±â¿¡¼­ ¼³¸íÇÑ´Ù): o LAM(±Ù°Å¸® ¿µ¿ª ¸ÖƼ ÄÄÇ»ÅÍ, Local Area Multicomputer)´Â MPI 1.1 Ç¥ÁØÀ» ¿ÏÀüÈ÷ ±¸ÇöÇÑ °ÍÀÌ´Ù. ÀÌ°ÍÀº MPI ÇÁ·Î±×·¥µéÀÌ °³º° ¸®´ª½º ½Ã½ºÅÛ¾ÈÀ̳ª UDP/TCP ¼ÒÄÏ Åë½ÅÀ» »ç¿ëÇÏ´Â ¸®´ª½º ½Ã½ºÅÛ Å¬·¯½ºÅ͸¦ ÅëÇؼ­ ½ÇÇàµÇ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ÀÌ ½Ã½ºÅÛÀº ´Ü¼øÇÑ ½ÇÇà Á¦¾î ±â´ÉµéÀ» ´ã°í ÀÖÀ¸¸ç ´Ù¾çÇÑ ÇÁ·Î±×·¥ °³¹ß°ú µð¹ö±ë µµ¿ì¹Ì(aids)¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ°ÍÀº ´ÙÀ½ ¼­ ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. o MPICH(MPI Ä«¸á·¹¿Â, CHameleon)Àº MPI 1.1 Ç¥ÁØÀÇ À̽ļºÀÌ ³ôÀº ¿ÏÀüÇÑ ±¸ÇöÀ¸·Î½á °í¾ÈµÇ¾ú´Ù. LAN°ú °°ÀÌ ÀÌ°ÍÀº °³º° ¸®´ª½º ½Ã½ºÅÛÀ̳ª UDP/TCP ¼ÒÄÏ Åë½ÅÀ» »ç¿ëÇÏ´Â ¸®´ª½º ½Ã½ºÅ۵鿡 °ÉÃļ­ MPI ÇÁ·Î±×·¥µéÀÌ ½ÇÇàµÇµµ·Ï Çã¿ëÇÑ´Ù. ±×·¯³ª È¿À²ÀûÀÌ°í ½±°Ô Ÿ°ÙÀ» ¹Ù²Ü ¼ö ÀÖ´Â ±¸ÇöÀ» Á¦°øÇÔÀ¸·Î½á ¸í¹éÇÏ°Ô MPI¸¦ ÁõÁøÇÑ °ÍÀÌ ±× ÀåÁ¡ÀÌ´Ù. ÀÌ MPI ±¸ÇöÀ» Æ÷ÆÃÇϱâ À§Çؼ­ "ä³Î ÀÎÅÍÆäÀ̽º(channel interface)"ÀÇ ´Ù¼¸°¡Áö ÇÔ¼öµéÀ» ±¸ÇöÇϰųª Á» ´õ ³ªÀº ¼º´ÉÀ» À§Çؼ­ ¿ÏÀüÇÑ MPICH ADI(Ãß»ó ÀåÄ¡ ÀÎÅÍÆäÀ̽º, Abstract Device Interface)¸¦ ±¸ÇöÇÑ´Ù. MPICH, ±×¸®°í ÀÌ°Í¿¡ ´ëÇÑ °Í°ú Æ÷Æÿ¡ °üÇÑ ¸¹Àº Á¤º¸µéÀÌ ¿¡ ÀÖ´Ù. o AFMPI(ÁýÇÕ ÇÔ¼ö MPI, Aggregate Function MPI)´Â MPI 2.0 Ç¥ÁØ ±¸ÇöÀÇ ºÎºÐ ÁýÇÕÀÌ´Ù. ÀÌ°ÍÀº ³»°¡ ÀÛ¼ºÇÑ °ÍÀÌ´Ù. AFAPI À§¿¡ ¸¸µé¾îÁ³°í ³·Àº-Áöü½Ã°£ ÁýÇÕ(collective) Åë½Å ÇÔ¼öµé°ú RMAµéÀ» º¸¿©ÁÖµµ·Ï °í¾ÈµÇ¾ú°í ±×·¡¼­ MPI µ¥ÀÌÅÍ Å¸ÀÔµé, Åë½ÅÀÚµé(communicators)µî¸¸À» Á¦°øÇÑ´Ù. ÀÌ°ÍÀº °³º° ¸®´ª½º ½Ã½ºÅÛÀ̳ª AFAPI-°¡´É ³×Æ®¿÷ Çϵå¿þ¾î¿¡ ÀÇÇؼ­ ¿¬°áµÈ Ŭ·¯¼­ÅÍ¿¡ °áÃļ­ MPI¸¦ »ç¿ëÇÑ C ÇÁ·Î±×·¥µéÀ» Çã¶ôÇÑ´Ù. ÀÌ°ÍÀº ¿¡¼­ ÀÚÀ¯·Ó°Ô ¾òÀ» ¼ö ÀÖ´Ù. À̵é MPI ±¸Çö¹°µéÁß ¾î¶² °ÍÀ» ¾²´ø °£¿¡ ´ëºÎºÐÀÇ °ø¿ë Åë½Å ŸÀÔµéÀ» ¼öÇàÇÏ´Â °ÍÀº ¾ÆÁÖ ´Ü¼øÇÏ´Ù. ±×·¯³ª MPI 2.0Àº, À̵é Áß¿¡ Çϳª¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¸Ó°¡ MPI¿Í °°Àº ´Ù¸¥ ÄÚµù ½ºÅ¸ÀϵéÀ» ÀνÄÇÏÁö ¸øÇÒ Á¤µµ·Î ÃæºÐÈ÷ ¼­·Î ´Ù¸¥ ¿©·¯°¡Áö Åë½Å Æз¯´ÙÀÓµéÀ» ¼­·Î ¿¬µ¿½ÃŲ´Ù. ±×·¡¼­ ´Ü ÇϳªÀÇ ¿¹Á¦ ÇÁ·Î±×·¥À» Á¦°øÇÏ´Â °Íº¸´Ù MPI°¡ Áö¿øÇÏ´Â ±âº»ÀûÀ¸·Î ¼­·Î ´Ù¸¥ Åë½Å Æз¯´ÙÀÓµé °¢°¢ÀÇ ¿¹Á¦¸¦ °¡Áö´Â °ÍÀÌ À¯¿ëÇÏ´Ù. ¾Æ·¡¿¡ ³ª¿À´Â ¸ðµç ¼¼°¡Áö ÇÁ·Î±×·¥µéÀº ÀÌ HOWTO¸¦ ÅëÇؼ­ »ç¿ëµÇ´Â PiÀÇ °ªÀ» ±¸ÇÏ´Â, µ¿ÀÏÇÑ ±âº» ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÑ´Ù. °¢ ÇÁ·Î¼¼¼­°¡ ±×°ÍÀÇ ºÎºÐÇÕÀ» ÃÑÇÕÀ» ±¸ÇÏ°í ±× °á°ú¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î¼¼¼­ 0¹ø¿¡°Ô Àü´ÞÇϱâ À§Çؼ­ ±âº» MPI ¸Þ½ÃÁö-Àü´Þ È£ÃâµéÀ» »ç¿ëÇϴ ù¹ø° MPI ÇÁ·Î±×·¥: ______________________________________________________________________ #include #include #include main(int argc, char **argv) { register double width; double sum, lsum; register int intervals, i; int nproc, iproc; MPI_Status status; if (MPI_Init(&argc, &argv) != MPI_SUCCESS) exit(1); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &iproc); intervals = atoi(argv[1]); width = 1.0 / intervals; lsum = 0; for (i=iproc; i #include #include main(int argc, char **argv) { register double width; double sum, lsum; register int intervals, i; int nproc, iproc; if (MPI_Init(&argc, &argv) != MPI_SUCCESS) exit(1); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &iproc); intervals = atoi(argv[1]); width = 1.0 / intervals; lsum = 0; for (i=iproc; i #include #include main(int argc, char **argv) { register double width; double sum = 0, lsum; register int intervals, i; int nproc, iproc; MPI_Win sum_win; if (MPI_Init(&argc, &argv) != MPI_SUCCESS) exit(1); MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Comm_rank(MPI_COMM_WORLD, &iproc); MPI_Win_create(&sum, sizeof(sum), sizeof(sum), 0, MPI_COMM_WORLD, &sum_win); MPI_Win_fence(0, sum_win); intervals = atoi(argv[1]); width = 1.0 / intervals; lsum = 0; for (i=iproc; i ÂüÁ¶)¿¡ ´ëÇÑ Çϵå¿þ¾î-Á¾¼ÓÀûÀÎ ·Î¿ì-·¹º§ Áö¿ø ¶óÀ̺귯¸®·Î½á ½ÃÀÛÇÏ¿´´Ù. PAPERS´Â ``³×Æ®¿÷ Çϵå¿þ¾î''¿¡¼­ ¾à°£ ³íÀǵǾú´Ù; ÀÌ°ÍÀº Áöü½Ã°£ÀÌ ¾à ¼ö ¸¶ÀÌÅ©·Î Ãʵ¿¾ÈÀÎ °ø¿ë µµ¸ÞÀÎ ¼³°è Ä¿½ºÅÒ ÁýÇÕ ÇÔ¼ö ³×Æ®¿÷ÀÌ´Ù. ±×·¯³ª ÇöÁ¸ÇÏ´Â ½´ÆÛÄÄÇ»Å͵麸´Ù ÄÄÆÄÀÏ·¯ ±â¼ú¿¡¼­ ´õ ³ªÀº Ÿ°ÙÀÌ µÉ ¼ö ÀÖ´Â ½´ÆÛÄÄÇ»Å͸¦ ¸¸µé·Á´Â ½Ãµµ·Î½á ÀÌ°ÍÀÌ °³¹ßµÇ¾ú´Ù´Â °ÍÀÌ PAPERS¿¡ ´ëÇؼ­ Áß¿äÇÑ °ÍÀÌ´Ù. ÀÌ°ÍÀº ÁúÀûÀ¸·Î ´ëºÎºÐÀÇ ¸®´ª½º Ŭ·¯½ºÅÍ ³ë·Âµé°ú, »ó´ëÀûÀ¸·Î º°·Î ÃæºÐÇÏÁö ¾Ê´Â ¼º±ä º´·Ä ¾îÇø®ÄÉÀ̼ǵ鿡 ´ëÇÑ Ç¥ÁØ ³×Æ®¿÷À» »ç¿ëÇÏ·Á°í ³ë·ÂÇÏ´Â µ¥ ÃÐÁ¡À» ¸ÂÃá PVM/MPIµé°ú ¾ÆÁÖ ´Ù¸£´Ù. ¸®´ª½º ÇǾ¾µéÀÌ PAPERS ½Ã½ºÅÛÀÇ ÄÄÆ÷³ÍÆ®µé·Î »ç¿ëµÈ´Ù´Â »ç½ÇÀº ´Ü¼øÇÏ°Ô °¡´ÉÇÑÇÑ °¡Àå ºñ¿ë-È¿À²ÀûÀÎ ¹æ½ÄÀ¸·Î ÇÁ·ÎÅäŸÀÔµéÀ» ±¸ÇöÇغ» °ÍÀÌ´Ù´Â °ÍÀ» ¸»ÇÒ »ÓÀÌ´Ù. ÇÑ Å¸½ºÀÇ ¼­·Î´Ù¸¥ ÇÁ·ÎÅäŸÀÔ ±¸Çö¹°µé¿¡ ´ëÇÑ °ø¿ë ·Î¿ì-·¹º§ ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍÆäÀ̽º ÇÊ¿ä°¡ AFAPI·Î PAPERS ¶óÀ̺귯¸®°¡ Ç¥ÁØÈ­µÇµµ·Ï ÇÑ °ÍÀÌ´Ù. ±×·¯³ª AFAPI¿¡ ÀÇÇؼ­ »ç¿ëµÇ´Â ¸ðµ¨Àº Ÿ°í³¯ ÀûºÎÅÍ ´õ ´Ü¼øÇÏ°í, ÀüÇüÀûÀÎ º´·Äó¸® ÄÄÆÄÀÏ·¯¿¡ ÀÇÇؼ­ ÄÄÆÄÀÏµÈ Äڵ峪 SIMD ¾ÆÅ°ÅØÃĵéÀ» À§Çؼ­ ÀÛ¼ºµÈ ÄÚµåµéÀÇ ´õ Á¤±³ÇÑ »óÈ£ÀÛ¿ë¿¡ Á» ´õ Àû´çÇÏ´Ù. ÀÌ ¸ðµ¨ÀÇ ´Ü¼ø¼ºÀº PAPERS Çϵå¿þ¾î¸¦ ¸¸µé±â ½±°Ô ÇÒ »Ó¸¸ ¾Æ´Ï°í SMPµé°ú °°Àº ´Ù¸¥ Çϵå¿þ¾î ½Ã½ºÅ۵鿡 ´ëÇÑ ³î¶øµµ·Ï È¿À²ÀûÀÎ AFAPI Æ÷ÆÃÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. AFAPI´Â ÇöÀç TTL_PAPERS, CAPERS, ¶Ç´Â WAPERS¸¦ »ç¿ëÇÏ¿© Ä¿³ØÆ®µÈ ¸®´ª½º Ŭ·¯½ºÅ͵鿡¼­ Àß ÀÛµ¿ÇÑ´Ù. ÀÌ°ÍÀº ¶ÇÇÑ (OS È£ÃâµéÀ̳ª ½ÉÁö¾î ¹ö½º-¶ôÅ· ¸í·É¾îµé ¾øÀ̵µ, ¼½¼Ç ``°øÀ¯ ¸Þ¸ð¸® ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼Ò°³'' ÂüÁ¶) SHMAPERS¶ó°í ºÒ¸®´Â ½Ã½ºÅÛ V °ø¿ë ¸Þ¸ð¸® ¶óÀ̺귯¸®(System V Shared Memory library)¸¦ »ç¿ëÇÑ SMP ½Ã½ºÅÛµé À§¿¡¼­µµ ÀÛµ¿ÇÑ´Ù. ÀüÅëÀûÀÎ ³×Æ®¿÷(¿¹, ÀÌ´õ³Ý) À§¿¡¼­ UDP ºê·Îµåij½ºÆ®¸¦ »ç¿ëÇÑ ¸®´ª½º Ŭ·¯½ºÅÍ À§¿¡¼­ ½ÇÇàÇÏ´Â ¹öÀüÀÌ °³¹ß Áß¿¡ ÀÖ´Ù. ¸ðµç °ü·ÃµÈ ¹öÀüµéÀÌ ¿¡¼­ ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. AFAPIÀÇ ¸ðµç ¹öÀüµéÀº C³ª C++·ÎºÎÅÍ È£ÃâµÇµµ·Ï ¼³°èµÇ¾ú´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼½¼Ç ``¿¹Á¦ ¾Ë°í¸®Áò''¿¡¼­ ¼³¸íµÈ ¹Ù ÀÖ´Â PiÀÇ AFAPI¹öÀüÀÌ´Ù. ______________________________________________________________________ #include #include #include "afapi.h" main(int argc, char **argv) { register double width, sum; register int intervals, i; if (p_init()) exit(1); intervals = atoi(argv[1]); width = 1.0 / intervals; sum = 0; for (i=IPROC; i ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ¸®´ª½º Æ÷ÆÃµÈ ¹öÀüÀÌ Á¸ÀçÇÑ´Ù; ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº À» ã¾Æ º¼ ¼ö ÀÖ´Ù. ÀÚ¼¼ÇÑ °ÍÀº condoradmin@cs.wisc.eduÀ» ¸¸³ªº¸¶ó. 3.7.2. DFN-RPC (German Research Network - Remote Procedure Call) DFN-RPC(µ¶ÀÏ ¿¬±¸ ³×Æ®¿÷ RPC) ÅøÀº ¿öÅ©½ºÅ×À̼ǰú °è»ê ¼­¹ö³ª Ŭ·¯½ºÅÍ °£¿¡ °úÇÐ-±â¼úÀûÀÎ ¾îÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¥µéÀ» ºÐ»êÇÏ°í º´·ÄÈ­(parallelize)Çϱâ À§Çؼ­ °³¹ßµÇ¾ú´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â Æ÷Æ®¶õÀ¸·Î ÀÛ¼ºµÈ ¾îÇø®ÄÉÀ̼ǿ¡ ÃÖÀûÈ­µÇ¾î ÀÕÁö¸¸ DFN-RPC´Â ¶ÇÇÑ C ȯ°æ¿¡¼­µµ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ¸®´ª½º·Î Æ÷ÆõǾú´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â ¿¡ ÀÖ´Ù. 3.7.3. DQS (ºÐ»ê Å¥À× ½Ã½ºÅÛ, Distributed Queueing System) Á¤È®ÇÏ°Ô ¸»Çؼ­ ¶óÀ̺귯¸®´Â ¾Æ´ÏÁö¸¸ DQS 3.0 (ºÐ»ê Å¥À× ½Ã½ºÅÛ)Àº ¸®´ª½º¿¡¼­ °³¹ßµÇ°í Å×½ºÆ®µÈ ÀÛ¾÷ Å¥À× ½Ã½ºÅÛÀÌ´Ù. ÀÌ°ÍÀº À̱âÁ¾ Ŭ·¯½ºÅ͸¦ ÇϳªÀÇ ¿£ÅÍƼ·Î½á »ç¿ëÇÏ°í °ü¸®ÇÒ ¼ö ÀÖµµ·Ï ¼³°èµÇ¾ú´Ù. ÀÌ°ÍÀº ¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù. CODINE 4.1.1(ºÐ»ê ³×Æ®¿÷ ȯ°æ¿¡¼­ÀÇ °è»ê, COmputing in DIstributed Network Environments)¶ó°í ºÒ¸®´Â »ó¾÷¿ë ¹öÀüµµ ¶ÇÇÑ Á¸ÀçÇÑ´Ù. ÀÌ°ÍÀÇ Á¤º¸´Â ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. 3.8. ÀÏ¹Ý Å¬·¯½ºÅÍ Âü°íÀÚ·á Ŭ·¯½ºÅ͵éÀº ¾ÆÁÖ ¸¹Àº ¹æ½ÄÀ¸·Î ±¸ÃàµÇ°í »ç¿ëµÉ ¼ö Àֱ⠶§¹®¿¡ Èï¹Ì·Î¿î °øÇåÀ» ÇÑ ±×·ìµéÀÌ ²Ï ÀÖ´Ù. ´ÙÀ½Àº ÀϹÝÀûÀÎ °ü½É°Å¸®°¡ µÉ ¼ö ÀÖ´Â ´Ù¾çÇÑ Å¬·¯½ºÅÍ-°ü·Ã ÇÁ·ÎÁ§Æ®µé¿¡ ´ëÇÑ ·¹ÆÛ·±½ºÀÌ´Ù. ÀÌ°ÍÀº ¸®´ª½º¿¡ ÇÑÁ¤µÈ °Í°ú ±×·¸Áö ¾ÊÀº ÀϹÝÀûÀΠŬ·¯½ºÅÍ ·¹ÆÛ·±½ºµéÀ» ´ã°í ÀÖ´Ù. ÀÌ ¸®½ºÆ®´Â ¾ËÆĺª ¼ø¼­·Î ³ª¿Í ÀÖ´Ù. 3.8.1. Beowulf Beowulf ÇÁ·ÎÁ§Æ®´Â, , »óÇ° ÇǾ¾-Ŭ·¡½º Çϵå¿þ¾î, °í-´ë¿ªÆø Ŭ·¯½ºÅÍ-ÀÎÅͳΠ³×Æ®¿÷, ±×¸®°í ¸®´ª½º ¿î¿µ üÁ¦¸¦ ±â¹ÝÀ¸·Î ÇÑ ±Ô°ÝÇ° ¿öÅ©½ºÅ×ÀÌ¼Ç Å¬·¯½ºÅ͸¦ »ç¿ëÇϱâ À§ÇÑ ¼ÒÇÁÆ®¿þ¾î Á¦ÀÛ¿¡ ÁýÁßÇÏ°í ÀÖ´Ù. Thomas Sterling°¡ Beowulf µÚÀÇ ÃßÁø·ÂÀ̾úÀ¸¸ç °è¼ÓÇؼ­ ÀϹÝÀûÀÎ °úÇÐ ÄÄÇ»ÆÃÀ» À§ÇÑ ¸®´ª½º Ŭ·¯½ºÅ͸µÀÇ ¿õº¯ÀûÀÌ°í ¼ÖÁ÷ÇÑ Á¦¾ÈÀÚÀ̾ú´Ù. »ç½Ç, ¸¹Àº ±×·ìµéÀÇ Áö±Ý ±×µéÀÇ Å¬·¯½ºÅ͸¦ "Beowulf class" ½Ã½ºÅÛµéÀ̶ó°í ºÎ¸¥´Ù - ½ÉÁö¾î ±× Ŭ·¯½ºÅÍ°¡ ½ÇÁ¦ °ø½ÄÀûÀÎ Beowulf ¼³°è¿¡ ÀüÇô ºñ½ÁÇÏÁö ¾Ê´õ¶óµµ ¸»ÀÌ´Ù. Beowulf ÇÁ·ÎÁ§Æ®¸¦ Áö¿øÇÏ´Â ÀÏÀ» ÇÏ´Â Don Becker´Â ¸®´ª½º¿¡ ÀÇÇؼ­ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â ¸¹Àº ³×Æ®¿÷ µå¶óÀ̹öµéÀ» ¸¸µé¾ú´Ù. À̵é Áß ¸¹Àº °ÍµéÀÌ BSD¿¡¼­ »ç¿ëµÇµµ·Ï Àû¿ëµÇ¾î ¿Ô´Ù. DonÀº ¶ÇÇÑ ºñ½Ñ ½ºÀ§Ä¡ Çãºê¾øÀÌ ´õ ³ôÀº ´ë¿ªÆøÀ» ȹµæÇϵµ·Ï ´Ù¼öÀÇ º´·Ä Ä¿³Ø¼ÇµéÀ» ÅëÇؼ­ ·Îµå-ºÐ¹è¸¦ Çã¿ëÇÏ´Â ¸¹Àº ¸®´ª½º ³×Æ®¿÷ µå¶óÀ̹öµé¿¡ ´ëÇؼ­µµ Ã¥ÀÓÀ» Áö°í ÀÖ´Ù. ÀÌ·± ·Îµå-ºÐ¹è(load-sharing) ŸÀÔÀº Beowulf Ŭ·¯½ºÅÍ°¡ ¿øÁ¶ÀÎ ´Ù¸¥ °Í°ú ±¸º°µÈ´Â ±â´ÉÀ̾ú´Ù. 3.8.2. Linux/AP+ Linux/AP+ ÇÁ·ÎÁ§Æ®, ´Â Á¤È®ÇÏ°Ô ¸®´ª½º Ŭ·¯½ºÅ͸µ¿¡ ´ëÇÑ °ÍÀÌ ¾Æ´Ï°í ¸®´ª½º¸¦ Fujitsu AP1000+À¸·Î Æ÷ÆÃÇÏ´Â °Í°ú ÀûÀýÇÑ º´·Ä ó¸® ÁõÁøÀ» ´õÇÏ´Â °Í¿¡ ÃÐÁ¡À» ¸ÂÃá °ÍÀÌ´Ù. AP1000+´Â ȯÇü ÅäÆú·ÎÁö, 25 MB/s ´ë¿ªÆø, ±×¸®°í 10 ¸¶ÀÌÅ©·Î ÃÊ Áöü ½Ã°£ ... À» °¡Áø Ä¿½ºÅÒ ³×Æ®¿÷À» »ç¿ëÇÏ´Â »ó¿ë SPARC-±â¹Ý º´·Ä ±â°èÀÌ´Ù. ´Ü¼øÇÏ°Ô ¸»Çؼ­ ÀÌ°ÍÀº SPARC ¸®´ª½º Ŭ·¯½ºÅä¿Í ¾ÆÁÖ À¯»çÇÏ´Ù. 3.8.3. Locust ·ÎÄ¿½ºÆ®(Locust) ÇÁ·ÎÁ§Æ®, ´Â ¸Þ½ÃÁö-Áöü½Ã°£À» ¼û±â±â À§Çؼ­ ±×¸®°í ½Ç½Ã°£À¸·Î ³×Æ®¿÷ Æ®·¡ÇÈÀ» ÁÙÀ̱â À§Çؼ­ ÄÄÆÄÀÏ-½Ã°£ Á¤º¸¸¦ »ç¿ëÇÏ´Â ºÐ»ê °¡»ó °øÀ¯ ¸Þ¸ð¸® ½Ã½ºÅÛÀ» ±¸ÃàÇÏ°í ÀÖ´Ù. Pupa´Â ·ÎÄ¿½ºÆ®ÀÇ ±â¹Ý Åë½Å ¼­ºê½Ã½ºÅÛÀÌ°í FreeBSDÀÇ 486 ÇǾ¾µéÀ» ¿¬°áÇϱâ À§Çؼ­ ÀÌ´õ³ÝÀ» »ç¿ëÇÏ¿© ±¸ÇöµÇ¾ú´Ù. ¸®´ª½ºÀΰ¡? 3.8.4. Midway DSM (Distributed Shared Memory) Midway, ´Â TreadMarks¿Í ´Ù¸£Áö ¾Ê´Â, ¼ÒÇÁÆ®¿þ¾î-±â¹Ý DSM(ºÐ»ê °øÀ¯ ¸Þ¸ð¸®) ½Ã½ºÅÛÀÌ´Ù. ÀÌ°ÍÀº »ó´ëÀûÀ¸·Î ´À¸° ÆäÀÌÁö-ÆúÆ® ¸ÞÄ«´ÏÁòµéº¸´Ù´Â ÄÄÆÄÀÏ-½Ã°£ µµ¿ò(aids)À» »ç¿ëÇÏ°í °øÂ¥¶ó´Â °ÍÀÌ Èñ¼Ò½ÄÀÌ´Ù. ³ª»Û ¼Ò½ÄÀº ÀÌ°ÍÀÌ ¸®´ª½º Ŭ·¯½ºÅ͵é À§¿¡¼­ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. 3.8.5. Mosix MOSIZ´Â BSDI BSD/OS¸¦ º¯Á¶Çؼ­ ÇǾ¾µéÀ» ³×Æ®¿÷À¸·Î ¹­Àº ±×·ì À§¿¡¼­ µ¿Àû ·Îµå ¹ë·±½Ì°ú ¼±Á¡(preemptive) ÇÁ·Î¼¼½º ÀÌÁÖ¸¦ Á¦°øÇϵµ·Ï ÇÑ °ÍÀÌ´Ù. ÀÌ°ÍÀº º´·Ä 󸮿¡ ´ëÇؼ­»Ó¸¸ÀÌ ¾Æ´Ï°í Á¶Àý °¡´ÉÇÑ(scalable) SMP¿Í ¾ÆÁÖ À¯»çÇÑ Å¬·¯½ºÅ͸¦ ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â µ¥¿¡µµ ÁÁÀº °ÍÀÌ´Ù. ¸®´ª½º ¹öÀüÀÌ ÀÖÀ»±î? Á» ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¸¦ ÂüÁ¶ÇÏÀÚ. 3.8.6. NOW (Network Of Workstations) ¹öŬ¸® NOW (³×Æ®¿÷À¸·Î ¹­Àº ¿öÅ©½ºÅ×À̼ǵé, Network Of Workstations) ÇÁ·ÎÁ§Æ®, ´Â ³×Æ®¿÷À¸·Î ¹­Àº ¿öÅ©½ºÅ×À̼ǵéÀ» »ç¿ëÇؼ­ º´·Ä ÄÄÇ»ÆÃÀ» Çϵµ·Ï ¸¹Àº ¾Ð·ÂÀ» Çà»çÇØ¿Ô´Ù. ÇöÀç ¸¹Àº ÀÛ¾÷µéÀÌ, ¸ðµÎ "´ÙÀ½ ¸î³â ¾È¿¡ ½ÇÁúÀûÀÎ 100°³ÀÇ ÇÁ·Î¼¼¼­ ½Ã½ºÅÛÀ» µ¥¸ðÇÏ´Â °Í"À» ÇâÇؼ­, ÀÌ·ç¾îÁö°í ÀÖ´Ù. ¾Æ»Ô»ç, À̵éÀº ¸®´ª½º¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. 3.8.7. ¸®´ª½º¸¦ »ç¿ëÇÏ´Â º´·Ä ó¸®(Parallel Processing Using Linux) ¸®´ª½º¸¦ »ç¿ëÇÑ º´·Ä ó¸® WWW »çÀÌÆ®, , ´Â ÀÌ HOWTOÀÇ È¨ ÆäÀÌÁöÀ̸ç ÇÏ·çÂ¥¸® Æ©Å͸®¾óÀ» ³ë¸° ¿Â¶óÀÎ ½½¶óÀ̵éÀ» Æ÷ÇÔÇÑ ¸¹Àº °ü·ÃµÈ ¹®¼­µéÀÌ ÀÖ´Â °÷ÀÌ´Ù. PAPERS ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ ÀÛ¾÷À» Á¦¿ÜÇÏ°íµµ ÆÛµà ´ëÇб³ ÀüÀÚ ¹× ÄÄÇ»ÅÍ °øÇÐ Çб³´Â ÀϹÝÀûÀ¸·Î º´·Ä ó¸®ÀÇ ¸®´õ·Î ±º¸²ÇØ¿Ô´Ù; ÀÌ »çÀÌÆ®´Â ´Ù¸¥ »ç¶÷µéÀÌ ¸®´ª½º ÇǾ¾µéÀ» º´·Ä 󸮿¡ Àû¿ëÇÏ´Â °ÍÀ» µ½±â À§Çؼ­ ¼³¸³µÇ¾ú´Ù. ÆÛµàÀÇ Ã¹¹ø° ¸®´ª½º ÇǾ¾ Ŭ·¯½ºÅÍ°¡ 1994³â 2¿ù¿¡ Á¶¸³µÈ ÀÌ·¡·Î ºñµð¿À º®(video wall)À» Æ÷ÇÔÇÑ, ¼ö¸¹Àº ¸®´ª½º ÇǾ¾ Ŭ·¯½ºÅ͵éÀÌ Æ۵࿡¼­ Á¶¸³µÇ¾î¿Ô´Ù. ºñ·Ï ÀÌ·± Ŭ·¯½ºÅ͵éÀÌ 386, 486, ±×¸®°í Pentium ½Ã½ºÅÛµé(Pentium Pro ½Ã½ºÅÛÀº ¾ø´Ù)À» »ç¿ëÇßÁö¸¸ ¿ä±Ù·¡ ÀÎÅÚÀÌ Pentium II ½Ã½ºÅÛµé·Î µÈ ´Ù¼öÀÇ Ä¿´Ù¶õ Ŭ·¯½ºÅ͵éÀ» ¸¸µé ¼ö ÀÖµµ·Ï ÆÛµà ´ëÇб³¿¡ ±âºÎ¸¦ Çß´Ù. ÀÌ·± Ŭ·¯½ºÅ͵éÀÌ ¸ðµÎ PAPERS ³×Æ®¿÷À» °¡Áö°í °¡Áú °ÍÀÌÁö¸¸ ´ëºÎºÐÀÇ °ÍµéÀÌ ¶ÇÇÑ ÀüÅëÀûÀÎ ³×Æ®¿÷À» °¡Áø´Ù. 3.8.8. ÆæƼ¾ö ÇÁ·Î Ŭ·¯½ºÅÍ ¿öÅ©¼¥(Pentium Pro Cluster Workshop) ¾ÆÀÌ¿À¿Í(Iowa) ÁÖ µ¥¸ðÀÎ(Des Moines)¿¡¼­ 1997³â 4¿ù 10-11¿¡ AMES ·¦Àº ÆæƼ¾ö ÇÁ·Î Ŭ·¯½ºÅÍ ¿öÅ©¼¥À» ¿­¾ú´Ù. ÀÌ ¿öÅ©¼¥ÀÇ WWW »çÀÌÆ®, , ´Â ¸ðµç Âü°¡ÀÚµé·ÎºÎÅÍ ¼öÁýµÈ dzºÎÇÑ ÇǾ¾ Ŭ·¯½ºÅÍ Á¤º¸µéÀ» °®°í ÀÖ´Ù. 3.8.9. TreadMarks DSM (Distributed Shared Memory) DSM (ºÐ»ê °øÀ¯ ¸Þ¸ð¸®, Distributed Shared Memory)´Â ÀÌ°Í¿¡ ÀÇÇؼ­ ¸Þ½ÃÁö-Àü´Þ ½Ã½ºÅÛÀÌ SMPó·³ ÇൿÇÏ´Â °Í°°ÀÌ º¸ÀÏ ¼ö ÀÖ´Â, ±â¼úÀÌ´Ù. ¸î°¡Áö ±×·± ½Ã½ºÅÛµéÀÌ Á¸ÀçÇÏ°í À̵é Áß ´ëºÎºÐÀº ¸Þ½ÃÁö Àü¼ÛÀ» Æ®¸®°Å(Ã˹ß)Çϱâ À§Çؼ­ OS ÆäÀÌÁö-¿À·ù ¸ÞÄ«´ÏÁòÀ» »ç¿ëÇÑ´Ù. TreadMarks, ´Â ÀÌ·± ½Ã½ºÅÛµé Áß Á» ´õ È¿À²ÀûÀÎ °ÍÀÌ¸ç ¸®´ª½º Ŭ·¯½ºÅÍ À§¿¡¼­ ½ÇÇàµÈ´Ù. ½½Ç ¼Ò½ÄÀº "TreadMarks°¡ ´ëÇб³µéÀ̳ª ºñ¿µ¸® ±â°üµé¿¡ Àúºñ¿ëÀ¸·Î ¹èÆ÷µÇ°í ÀÖ´Ù´Â °ÍÀÌ´Ù". ÀÌ ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ Á» ´õ ¸¹Àº Á¤º¸¸¦ ¿øÇÑ´Ù¸é treadmarks@ece.rice.edu°ú Á¢ÃËÇغ¸±â ¹Ù¶õ´Ù. 3.8.10. U-Net (User-level NETwork interface architecture) ÄÚ³Ú ´ëÇб³ÀÇ U-Net (User-level NETwork interface architecture) ÇÁ·ÎÁ§Æ®, ´Â ³×Æ®¿÷ ÀÎÅÍÆäÀ̽º¸¦ °¡»óÈ­Çؼ­(virtualize) ¾îÇø®ÄÉÀ̼ǵéÀÌ ¸Þ½ÃÁöµéÀ» ¿î¿µÃ¼Á¦ÀÇ °£¼·¾øÀÌ Àü¼ÛÇϰųª ¼ö½ÅÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â, »óÇ° ³×Æ®¿÷ Çϵå¿þ¾î¸¦ »ç¿ëÇÑ ³·Àº Áöü ½Ã°£°ú ³ôÀº ´ë¿ªÆøÀ» Á¦°øÇÏ´Â ½Ãµµ¸¦ ÇÏ°í ÀÖ´Ù. U-NetÀº Fast ÀÌ´õ³Ý¿¡ ±â¹ÝÇÑ DECchip DC21140 ¸¦ »ç¿ëÇϰųª Fore Systems PCA-200(PCA-200E°¡ ¾Æ´Ô) ATM Ä«¸¦ »ç¿ëÇÏ´Â ¸®´ª½º ÇǾ¾µé À§¿¡¼­ ÀÛµ¿ÇÑ´Ù. 3.8.11. WWT (Wisconsin Wind Tunnel) À§½ºÄܽſ¡´Â »ó´çÈ÷ ¸¹Àº Ŭ·¯½ºÅÍ-°ü·Ã ÀÛ¾÷µéÀÌ ÀÌ·ç¾îÁö°í ÀÖ´Ù. WWT (Wisconsin Wind Tunnel) ÇÁ·ÎÁ§Æ®, ´Â ÄÄÆÄÀÏ·¯µé°ú ±â¹Ý Æз¯·² Çϵå¿þ¾î »çÀÌÀÇ "Ç¥ÁØ" ÀÎÅÍÆäÀ̽º¸¦ °³¹ßÇÏ´Â ÂÊÀÇ ¸ðµç Á¾·ùÀÇ ÀϵéÀ» ¼öÇàÇÏ°í ÀÖ´Ù. Wisconsin COW (Cluster Of Workstations), Cooperative Shared Memory and Tempest, Paradyn Parallel Performance Tools µîÀÌ ÀÖ´Ù. ºÒÇàÇÏ°Ôµµ ¸®´ª½º¿¡ °üÇÑ ÀϵéÀº º°·Î ¾ø´Ù. 4. ÇϳªÀÇ ·¹Áö½ºÅÍÀ§¿¡¼­ÀÇ SIMD(¿¹: MMX »ç¿ë) ´ÜÀÏ ·¹Áö½ºÅÍ ³»ÀÇ SIMD(SWAR)´Â »õ·Î¿î ¾ÆÀ̵ð¾î°¡ ¾Æ´Ï´Ù. k-ºñÆ® ·¹Áö½ºÅÍ, µ¥ÀÌÅÍ Æнº, ±×¸®°í ÇÔ¼ö À¯´Ö À» °¡Áö´Â ±â°è°¡ ÀÖÀ» ¶§ ÀÏ¹Ý ·¹Áö½ºÅÍ ¿¬»êµéÀÌ n°³ÀÇ k/n-ºñÆ®, Á¤¼ö ÇÊµå °ªµé À§¿¡¼­ SIMD º´·Ä ¿¬»êµé·Î ¼öÇàµÉ ¼ö ÀÖ´Ù´Â °ÍÀÌ ¿À·¡ÀüºÎÅÍ ¾Ë·ÁÁ® ¿Ô´Ù. ±×·¯³ª SWAR ±â¼úµé¿¡ ÀÇÇؼ­ Á¦°øµÇ´Â 2¹è¿¡¼­ 8¹è±îÁöÀÇ ¼Óµµ Áõ°¡°¡ ¸ÞÀνºÆ®¸² ÄÄÇ»Æÿ¡ ´ëÇÑ °ü½É»ç°¡ µÈ °ÍÀº ¿äÁòµé¾î ¸ÖƼ¹Ìµð¾î¿¡ ´ëÇÑ °­·ÄÇÑ Ãß¼¼¶§¹®ÀÌ´Ù. ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­µéÀÇ 1997 ¹öÀü ´ëºÎºÐÀº SWAR¿¡ ´ëÇÑ Çϵå¿þ¾î Áö¿øÀ» ´ã°í ÀÖ´Ù: o AMD K6 MMX (MultiMedia eXtensions) o Cyrix M2 MMX (MultiMedia eXtensions) o Digital Alpha MAX (MultimediA eXtensions) o Hewlett-Packard PA-RISC MAX (Multimedia Acceleration eXtensions) o Intel Pentium II & Pentium with MMX (MultiMedia eXtensions) o Microunity Mediaprocessor SIGD (Single Instruction on Groups of Data) o MIPS Digital Media eXtension (MDMX, pronounced Mad Max) o Sun SPARC V9 VIS (Visual Instruction Set) »õ·Î¿î ¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­µé¿¡ ÀÇÇؼ­ Á¦°øµÇ´Â Çϵå¿þ¾î Áö¿ø¿¡´Â ¸î°¡Áö °áÇÔµéÀÌ ÀÖ°í ¾î¶² Çʵå Å©±âµé¿¡ ´ëÇؼ­ ¾î¶² ¿¬»êµé¸¸À» Áö¿øÇÏ´Â °Í°ú °°Àº ´ÜÁ¡ÀÌ ÀÖ´Ù. ±×·¯³ª ¸¹Àº SWAR ¿¬»êµéÀÌ È¿À²ÀûÀ̾î¾ß ÇÏ´Â Çϵå¿þ¾î Áö¿øÀÌ ÇÊ¿ä¾ø´Ù´Â °ÍÀ» ±â¾ïÇÏ´Â °ÍÀÌ Áß¿äÇÏ´Ù. ¿¹¸¦ µé¾î¼­ ºñÆ®´ÜÀ§ ¿¬»êµéÀº ÇϳªÀÇ ·¹Áö½ºÅ͸¦ ³í¸®ÀûÀ¸·Î ºÐÇÒÇÏ´Â °Í¿¡ ÀÇÇؼ­ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù. 4.1. SWAR: ¾îµð¿¡ ÁÁÀº °ÍÀÌ°¡(What Is It Good For)? ºñ·Ï ¸ðµç ÇöÀç ÇÁ·Î¼¼¼­µéÀÌ Àû¾îµµ ¾î´ø SWAR º´·Ä ±â´É(parallelism)°ú ÇÔ²² ¼öÇàÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù°í ÇÏ´õ¶óµµ °¡Àå ÁÁÀº SWAR-°³¼± ¸í·É ¼Âµéµµ ¾ÆÁÖ ÀϹÝÀûÀÎ-¸ñÀûÀÇ º´·Ä ±â´É(parallelism)À» Áö¿øÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÌ ½½Ç »ç½ÇÀÌ´Ù. »ç½Ç, ¸¹Àº »ç¶÷µéÀÌ Pentium°ú "Pentium with MMX technology" »çÀÌÀÇ ¼öÇà ´É·Â Â÷ÀÌ°¡ ¿ì¿¬È÷µµ MMX¿Í µ¿½Ã¿¡ ³ªÅ¸³­ ´õ Å« L1 ij½¬¿Í °°Àº °Íµé ¶§¹®À̶ó°í »ý°¢ÇÑ´Ù. ±×·¸´Ù¸é SWAR(Áï MMX)´Â Çö½ÇÀûÀ¸·Î ¾îµð¿¡ ÁÁÀº °ÍÀΰ¡? o Á¤¼öµé¸¸ ÀÖ´Â °ÍÀÌ, ´õ ÀûÀº °ÍÀÌ ´õ ÁÁ´Ù. 32-ºñÆ® °ªµéÀº 64-ºñÆ® MMX ·¹Áö½ºÅÍ¿¡ ¸Â¾Æ ¶³¾îÁöÁö¸¸ 8°³ÀÇ 1-¹ÙÀÌÆ® ¹®ÀÚµéÀ̳ª 1-ºñÆ®°ªµéÀÇ Ã¼½ºÆÇ Å©±â(ü½ºÆÇÀº °¡·Î ¼¼·Î 8°³¾¿ÀÇ Ä­ÀÌ ÀÖ´Ù. ±×·¡¼­ 64°³; ¿ªÀÚÁÖ) °³¼ö ÀüüÀÌ´õ¶óµµ ¸Â¾Æ ¶³¾îÁø´Ù. Note: ÀÌ ±ÛÀ» ¾²°í ÀÖ´Â ¼ø°£ ºñ·Ï ¸¹Àº ³»¿ëÀÌ ¾øÁö¸¸ MMXÀÇ ºÎµ¿-¼Ò¼ýÁ¡ ¹öÀüÀÌ ÀÖÀ» °ÍÀÌ´Ù. Cyrix´Â MMFP¿¡ ´ëÇÑ ¸î°¡Áö ¼³¸íÀ» ´ãÀº ½½¶óÀ̵åµéÀ» ¿¡ Æ÷½ºÆÃÇسõ¾Ò´Ù. ¾ó¸¥ ºÁ¼­ MMFP´Â µÎ 32-ºñÆ® ºÎµ¿-¼Ò¼ýÁ¡ ¼ýÀÚµéÀÌ 64-ºñÆ® MMX ·¹Áö½ºÅÍ Çϳª¿¡ ÆÑÅ·µÇ´Â °ÍÀ» Áö¿øÇÒ °ÍÀÌ´Ù; ÀÌ°ÍÀ» µÎ°³ÀÇ MMFP ÆÄÀÌÇÁ¶óÀεé·Î ¹­À¸¸é Ŭ·° Çϳª´ç ³×°³ÀÇ ´ÜÀÏ-Á¤¹Ðµµ FLOP¸¦ »ý»êÇÒ °ÍÀÌ´Ù. o SIMD, ¶Ç´Â º¤ÅÍ-½ºÅ¸ÀÏ º´·Ä ó¸®(parallelism). µ¿ÀÏÇÑ ¿¬»êÀÌ ¸ðµç Çʵåµé¿¡ µ¿½Ã¿¡ Àû¿ëµÈ´Ù. ¼±ÅÃµÈ Çʵåµé¿¡ È¿°ú¸¦ ¾ø¾Ö´Â ¹æ¹ýµé(Áï, SIMD enable ¸¶½ºÅ·)ÀÌ Á¸ÀçÇÏÁö¸¸ ±×µéÀº º¹ÀâÇÏ°í ¼º´ÉÀ» ÀúÇϽÃŲ´Ù. o Áö¿ªÈ­(localized)µÇ°í Á¤±ÔÀûÀÎ(¿ÀÈ÷·Á ÆÑÅ·µÈ), ¸Þ¸ð¸® ÂüÁ¶ ÆÐÅϵé. ÀϹÝÀûÀÎ SWAR, ±×¸®°í Ưº°È÷ MMX, ´Â ·£´ý-¼ø¼­ Á¢±Ù¿¡ Áã¾àÀÌ´Ù; º¤ÅÍ x[y](¿©±â¼­ y´Â À妽º ¹è¿­ÀÌ´Ù)¸¦ ¸ðÀ¸´Â °ÍÀº ¾öû ºñ½Î´Ù. À̵éÀº ½É°¢ÇÑ Á¦¾àÁ¡µéÀÌÁö¸¸ ÀÌ·± ŸÀÔÀÇ º´·Ä 󸮴 ¸¹Àº º´·Ä ¾Ë°í¸®Áòµé¿¡¼­ ³ªÅ¸³ª´Â °ÍÀÌ´Ù - ¸ÖƼ¹Ìµð¾î ¾îÇø®ÄÉÀ̼ǵé»Ó¸¸ÀÌ ¾Æ´Ï°í. ¾Ë°í¸®ÁòÀÇ ÀûÀýÇÑ Å¸ÀÔ¿¡ ´ëÇؼ­ SWAR´Â SMP³ª Ŭ·¯½ºÅÍ º´·Ä 󸮺¸´Ù ÈξÀ È¿À²ÀûÀÌ´Ù... ±×¸®°í ÀÌ°ÍÀº ±×°ÍÀ» »ç¿ëÇÏ´Â µ¥ ¾î¶² Ãß°¡ ºñ¿ëµµ µéÁö ¾Ê´Â´Ù. 4.2. SWAR ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼Ò°³(Introduction To SWAR Programming) SWARÀÇ ±âº» °³³ä(ÄÁ¼Á), ´ÜÀÏ ·¹Áö½ºÅÍ ¾È¿¡¼­ÀÇ SIMD, ´Â ¿öµå-±æÀÌ ·¹Áö½ºÅ͵é À§¿¡¼­ÀÇ ¿¬»êµéÀÌ n°³ÀÇ k/n-ºñÆ® ÇÊµå ¼öÄ¡µé¿¡ ´ëÇÑ SIMD º´·Ä ¿¬»êÀ» ¼öÇàÇÔÀ¸·Î½á °è»ê ¼Óµµ¸¦ ³ôÀÌ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ±×·¯³ª SWAR ±â¼úÀ» »ç¿ëÇÏ´Â °ÍÀº ´Ù¼Ò ¾î»öÇÒ ¼ö ÀÖÀ¸¸ç ¶ÇÇÑ ¾î¶² SWAR ¿¬»êµéÀº ½ÇÁ¦ ´ëÀÀµÇ´Â ÀÏ·ÃÀÇ ¼øÂ÷ÀûÀÎ ¿¬»êµéº¸´Ù, ±×µéÀÌ ÇÊµå ºÐÇÒÀ» ¼öÇàÇÏ´Â Ãß°¡ÀÇ ¸í·É¾îµéÀ» ¿ä±¸Çϱ⠶§¹®¿¡, ´õ °í ºñ¿ëÀÌ´Ù. ÀÌ °üÁ¡À» ¿¹½ÃÇϱâ À§Çؼ­ »ó´çÈ÷ ´Ü¼øÈ­µÈ, °¢ 32-ºñÆ® ·¹Áö½ºÅÍ ¾È¿¡¼­ 4°³ÀÇ 8-ºñÆ® ÇʵåµéÀ» °ü¸®ÇÏ´Â, SWAR ¸ÞÄ«´ÏÁòÀ» »ý°¢Çغ¸µµ·Ï ÇÏÀÚ. µÎ ·¹Áö½ÃÅ͵é¾ÈÀÇ ¼öÄ¡µéÀº ´ÙÀ½°ú °°ÀÌ Ç¥ÇöµÉ ¼ö ÀÖ°Ú´Ù: ______________________________________________________________________ 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 | +-------+-------+-------+-------+ ______________________________________________________________________ ÀÌ°ÍÀº ´Ü¼øÇÏ°Ô °¢ ·¹Áö½ºÅÍ°¡ ±âº»ÀûÀ¸·Î 4°³ÀÇ µ¶¸³ 8-ºñÆ® Á¤¼ö ¼öÄ¡µéÀÇ º¤ÅÍ·Î º¼ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¶Ç´Â Ç׸ñ 0 (PE0)¸¦ ó¸®ÇÏ´Â Reg0¿Í Reg1¿¡ ÀÖ´Â ¼öÄ¡µé·Î½á A¿Í E¸¦, ±×¸®°í PE1ÀÇ ·¹Áö½ºÅ͵鿡 ÀÖ´Â ¼öÄ¡µé·Î½á B°ú F¸¦, ±×¸®°í °è¼Ó ÀÌ·± ½ÄÀ¸·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹®¼­ÀÇ ³ª¸ÓÁö ºÎºÐÀº ÀÌ·± Á¤¼ö º¤Å͵鿡 ´ëÇÑ SIMD º´·Ä ¿¬»êÀ» À§ÇÑ ±âº» Ŭ·¡½ºµé°ú À̵éÀÇ ÇÔ¼öµéÀÌ ¾î¶»°Ô ±¸ÇöµÉ ¼ö ÀÖ´Â °¡¿¡ ´ëÇؼ­ ´ë·«ÀûÀ¸·Î ¸®ºäÇÒ °ÍÀÌ´Ù. 4.2.1. ´ÙÇü¼º ¿¬»ê(Polymorphic Operations) ¾î¶² SWAR ¿¬»êµéÀº, ÀÌ ¿¬»êÀÌ ½ÇÁ¦ ÀÌ·± 8-ºñÆ® Çʵåµé¿¡ º´·Ä·Î ¼­·Î µ¶¸³ÀûÀ¸·Î °è»êµÇµµ·Ï ÀǵµµÇ¾ú´Ù´Â »ç½Ç¿¡ ½Å°æ¾²Áö ¾Ê°í¼­ ÀÏ¹Ý 32-ºñÆ® Á¤¼ö ¿¬»êµéÀ» »ç¿ëÇؼ­ ½±°Ô ¼öÇàµÉ ¼ö ÀÖ´Ù. ¿ì¸®´Â ÀÓÀÇÀÇ ÀÌ·± SWAR ¿¬»êµéÀ» ´ÙÇü¼º(polymorphic)À̶ó°í ºÎ¸¥´Ù. ¿Ö³Ä¸é ÀÌ ±â´ÉÀÌ Çʵå ŸÀÔµé(Å©±âµé)¿¡ ÀÇÇؼ­ ¿µÇâÀ» ¹ÞÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ÀÓÀÇÀÇ Çʵ尡 ¿µÀÌ ¾Æ´Ñ°¡¸¦ Å×½ºÆ®ÇÏ´Â °ÍÀº ´ÙÇü¼ºÀÌ´Ù. ±×¸®°í ¸ðµç ºñÆ®´ÜÀ§ ³í¸® ¿¬»êµéµµ ±×·¸´Ù. ¿¹¸¦ µé¾î¼­ ÀÏ¹Ý ºñÆ®´ÜÀ§ and ³í¸® ¿¬»ê(CÀÇ & ¿¬»êÀÚ)Àº ºñÆ®´ÜÀ§·Î ¼öÇàÇÏ°í ±× Çʵå Å©±â°¡ ¾ó¸¶³ª µÇ´ÂÁö¿¡ ½Å°æ¾²Áö ¾Ê´Â´Ù. À§ ·¹Áö½ºÅ͵éÀÇ ´Ü¼øÇÑ ºñÆ®´ÜÀ§ and ¿¬»ê °á°ú´Â ´ÙÀ½°ú °°Àº °á°ú¸¦ ¸¸µé¾î ³½´Ù: ______________________________________________________________________ PE3 PE2 PE1 PE0 +---------+---------+---------+---------+ Reg2 | D&H 7:0 | C&G 7:0 | B&F 7:0 | A&E 7:0 | +---------+---------+---------+---------+ ______________________________________________________________________ ºñÆ®´ÜÀ§ and ¿¬»êÀº Ç×»ó ¿¬»ê´ë»ó ºñÆ® k ¼öÄ¡µé¿¡ ÀÇÇؼ­¸¸ ¿µÇâÀ» ¹Þ´Â °á°ú ºñÆ® kÀÇ ¼öÄ¡¸¦ °¡Áö±â ¶§¹®¿¡ ¾î¶² Çʵå Å©±â¶óµµ µ¿ÀÏÇÑ ´ÜÀÏ ¸í·É¿¡ ÀÇÇؼ­ Áö¿ø¹Þ´Â´Ù. 4.2.2. ºÐÇÒµÈ ¿¬»ê(Partitioned Operations) ºÒÇàÇÏ°Ôµµ ¸¹Àº Áß¿äÇÑ SWAR ¿¬»êµéÀÌ ´ÙÇü¼ºÀÌ ¾Æ´Ï´Ù. ´õÇϱâ, »©±â, °öÇϱâ, ³ª´©±â µî°ú °°Àº »çÄ¢¿¬»êµéÀº ¸ðµÎ Çʵåµé°£ÀÇ ÀÚ¸®¿Ã¸²(carry)/ºô·Á¿È(borrow) »óÈ£ÀÛ¿ëÀ» ÇÒ ¼ö¹Û¿¡ ¾ø´Ù. ¿ì¸®´Â ÀÌ·± SWAR ¿¬»êµéÀ» ºÐÇÒµÈ(partitioned) °ÍÀ̶ó°í ºÎ¸¥´Ù. ¿Ö³Ä¸é °¢ ¿¬»êÀÌ ¹Ýµå½Ã ¿¬»ê´ë»óµéÀ» È¿À²ÀûÀ¸·Î ºÐÇÒÇØ¾ß ÇÏ°í Çʵåµé °£ÀÇ »óÈ£ÀÛ¿ëÀ» ¸·¾Æ¾ß Çϱ⠶§¹®ÀÌ´Ù. ±×·¯³ª ÀÌ·± È¿°ú¸¦ ¾ò´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Â ¼¼°¡Áö ¼­·Î ´Ù¸¥ ¹æ¹ýµéÀÌ Á¸ÀçÇÑ´Ù. 4.2.2.1. ºÐÇÒµÈ ¸í·É¾î(Partitioned Instructions) ºÐÇÒµÈ ¿¬»êµéÀ» ±¸ÇöÇÏ´Â °¡Àå ¸í¹éÇÑ Á¢±Ù¹ýÀº Çʵåµé °£ÀÇ carry/borrow ³í¸®¸¦ ÀÚ¸£´Â "ºÐÇÒµÈ º´·Ä ¸í·É¾î"¿¡ ´ëÇÑ Çϵå¿þ¾î Áö¿øÀ» Á¦°øÇÏ´Â °ÍÀÌ´Ù. ÀÌ·± Á¢±ÙÀº ÃÖ°íÀÇ ¼º´ÉÀ» ³»Áö¸¸ ÇÁ·Î¼¼¼­ÀÇ ¸í·É ÁýÇÕÀ» º¯°æÇØ¾ß ÇÏ°í ÀϹÝÀûÀ¸·Î Çʵå Å©±â¿¡ ¸¹Àº Á¦ÇѵéÀÌ ÀÖ´Ù(¿¹, 8-ºñÆ® ÇʵåµéÀÌ Áö¿øµÉ ¼ö ÀÖÁö¸¸ 12-ºñÆ® ÇʵåµéÀº ±×·¸Áö ¸øÇÑ °æ¿ì). AMD/Cyrix/Intel MMX, Digital MAX, HP MAX, ±×¸®°í Sun VIS´Â ¸ðµÎ ºÐÇÒ ¸í·ÉµéÀÇ Á¦ÇÑµÈ ¹öÀüµéÀ» ±¸ÇöÇÑ °ÍµéÀÌ´Ù. ºÒÇàÇÏ°Ôµµ ÀÌ·± ¼­·Î ´Ù¸¥ ¸í·É ¼Â È®ÀåµéÀº Áß¿äÇÑ ´Ù¸¥ Á¦¾àµéÀ» °¡Áö±â ¶§¹®¿¡ ±×µé°£¿¡ ¾Ë°í¸®ÁòµéÀÌ ¼­·Î Æ÷ÆÃµÉ ¼ö ¾ø°Ô ¸¸µç´Ù. ¿¹¸¦ µé¾î¼­ ´ÙÀ½°ú °°Àº ºÐÇÒµÈ ¿¬»êÀÇ »ùÇøµÀ» »ý°¢Çغ¸ÀÚ: ______________________________________________________________________ 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 | +---------------------+---------------------+---------+--------+---------+ ______________________________________________________________________ ÀÌ Å×ÀÌºí¿¡¼­ ¼ýÀÚµéÀº °¢ ¿¬»êÀÌ Áö¿øµÇ´Â Çʵå Å©±âµéÀ» ºñÆ® ´ÜÀ§·Î ³ªÅ¸³½ °ÍÀÌ´Ù. ºñ·Ï ÀÌ Å×À̺íÀÌ Á» ´õ ÈǸ¢ÇÑ °ÍµéÀ» Æ÷ÇÔÇÑ ¸¹Àº ¸í·ÉµéÀ» »ý·«ÇÑ °ÍÀ̱â´Â ÇÏÁö¸¸ ¸¹Àº Â÷ÀÌ°¡ ÀÖ´Ù´Â °ÍÀº ºÐ¸íÇÑ »ç½ÇÀÌ´Ù. ÀÌÀÇ Á÷Á¢ÀûÀÎ °á°ú´Â °í-¼öÁØ ¾ð¾îµé(High-Level Languages; HLLs)°¡ ½ÇÁ¦·Î ÇÁ·Î±×·¡¹Ö ¸ðµ¨·Î½á ¾ÆÁÖ ÀûÇÕÇÑ °ÍÀº ¾Æ´Ï´Ù¶ó´Â °Í°ú Æ÷ÆÃÀÌ ÀϹÝÀûÀ¸·Î ¾ÆÁÖ ³ª»Ú´Ù´Â °ÍÀÌ´Ù. 4.2.2.2. ±³Á¤ Äڵ带 °¡Áö´Â ºÐÇÒµÇÁö ¾ÊÀº ¿¬»ê(Unpartitioned Opera­ tions With Correction Code) ºÐÇÒ ¸í·É¾îµéÀ» »ç¿ëÇؼ­ ºÐÇÒ ¿¬»êµéÀ» ±¸ÇöÇÏ´Â °ÍÀº ºÐ¸íÈ÷ È¿À²ÀûÀÏ ¼ö ÀÖÁö¸¸ ÇÊ¿äÇÑ ºÐÇÒ ¿¬»êÀÌ Çϵå¿þ¾î¿¡ ÀÇÇؼ­ Áö¿øµÇÁö ¾ÊÀ¸¸é ¾î¶»°Ô ÇÒ °ÍÀΰ¡? ÇØ´äÀº Çʵ尣 carry/borrowÀ» °¡Áø ¿¬»êµéÀ» ÀÏ¹Ý ¸í·É¾îµéÀ» »ç¿ëÇؼ­ ¼öÇàÇÏ°í ¿øÇÏÁö ¾Ê´Â ÇÊµå »óÈ£ÀÛ¿ëÀ» ±³Á¤ÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ¼øÀüÈ÷ ¼ÒÇÁÆ®¿þ¾î·Î Á¢±ÙÇÏ´Â °ÍÀÌ°í ±³Á¤ÀÛ¾÷Àº ¿À¹öÇìµå¸¦ ÀÏÀ¸Å°Áö¸¸ ¿ÏÀüÈ÷ ÀϹÝÀûÀÎ ÇÊµå ºÐÇÒ·Î Àß ÀÛµ¿ÇÑ´Ù. ÀÌ·± Á¢±Ù¹ýÀº ºÐÇÒ ¸í·É¿¡ ´ëÇÑ Çϵå¿þ¾î Áö¿øÀÇ °¸µéÀ» ä¿ì´Â µ¥ »ç¿ëµÉ ¼ö Àְųª ¾Æ´Ï¸é Çϵå¿þ¾î Áö¿øÀ» ÀüÇô ÇÏÁö ¾Ê´Â Ÿ°Ù ±â°èµé¿¡ ´ëÇؼ­ ¿ÏÀüÇÑ ±â´ÉÀ» Á¦°øÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ ¶ÇÇÑ ¿ÏÀüÈ÷ ÀϹÝÀûÀÌ´Ù. »ç½Ç C¿Í °°Àº ¾ð¾î·Î ÄÚµå ½ÃÄö½ºµéÀ» Ç¥ÇöÇÔÀ¸·Î½á ÀÌ·± Á¢±Ù¹ýÀº SWAR ÇÁ·Î±×·¥µéÀÌ ¿ÏÀüÈ÷ Æ÷Æà °¡´ÉÇÑ °ÍÀ¸·Î ¸¸µç´Ù. ±×·¸´Ù¸é ´ÙÀ½°ú °°Àº Áú¹®ÀÌ ¹Ù·Î »ý±ä´Ù: ºñºÐÇÒ ¿¬»êµéÀ» ±³Á¤ ÄÚµå·Î SWAR ºÐÇÒ ¿¬»êµéÀ» ½Ã¹°·¹À̼ÇÇÏ´Â °ÍÀÌ Á¤È®È÷ ¾ó¸¶³ª ºñÈ¿À²ÀûÀΰ¡? ±Û½ê ÀÌ°ÍÀº È®½ÇÈ÷ $64k ¹®Á¦ÀÌ´Ù... ÇÏÁö¸¸ ¸¹Àº ¿¬»êµéÀÌ ¿¹»óÇÏ´Â °Í¸¸Å­ ¾î·Á¿î °ÍÀº ¾Æ´Ï´Ù. ÀϹÝÀûÀÎ 32-ºñÆ® ¿¬»êµéÀ» »ç¿ëÇؼ­ ³×°³ÀÇ ¼ººÐÀ» °¡Áö´Â 8-ºñÆ® Á¤¼ö º¤ÅÍµé µÎ°³¸¦ ´õÇÏ´Â °Í, x+yÀ» »ý°¢Çغ¸ÀÚ. ÀϹÝÀûÀÎ 32-ºñÆ® µ¡¼ÀÀº ½ÇÁ¦·Î Á¤È®ÇÑ °á°ú¸¦ ¸¸µéÁö¸¸ 8-ºñÆ® Çʵåµé Áß Çϳª¶óµµ ´ÙÀ½ Çʵå·Î ij¸®(ÀÚ¸® ¿Ã¸²)¸¦ ¸¸µç´Ù¸é Á¤È®ÇÑ °á°ú¸¦ ¸¸µé¾î³»Áö ¸øÇÑ´Ù. ±×·¡¼­ ¿ì¸®ÀÇ ¸ñÀûÀº ´Ü¼øÇÏ°Ô ±×·± ij¸®°¡ ÀϾÁö ¾Êµµ·Ï º¸ÀåÇÏ´Â °ÍÀÌ´Ù. µÎ°³ÀÇ k-ºñÆ® ÇʵåµéÀ» ´õÇÏ´Â °ÍÀº ¸¹¾Æ¾ß k+1 ºñÆ® °á°ú¸¦ ¸¸µé¾î ³»±â ¶§¹®¿¡ ¿ì¸®´Â °¢ ÇʵåÀÇ msb(most significant bit)¸¦ ´Ü¼øÈ÷ "¸¶½ºÅ· Á¦°Å(masking out)"ÇÔÀ¸·Î½á ¾î¶² ij¸®µµ ¹ß»ýÇÏÁö ¾Êµµ·Ï º¸ÀåÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº 0x7f7f7f7f·Î °¢ ÇÇ¿¬»êÀÚ¸¦ ºñÆ®´ÜÀ§ and(bitwise anding)ÇÏ°í ³ª¼­ ÀÏ¹Ý 32-ºñÆ® ´õÇϱ⸦ ¼öÇàÇÔÀ¸·Î½á ÀÌ·ç¾îÁø´Ù. ______________________________________________________________________ t = ((x & 0x7f7f7f7f) + (y & 0x7f7f7f7f)); ______________________________________________________________________ ÀÌ °á°ú´Â Á¤È®ÇÏ´Ù... °¢ ÇʵåÀÇ msb¸¦ Á¦¿ÜÇÏ°í ¸»ÀÌ´Ù. °¢ Çʵ忡 ´ëÇؼ­ ±³Á¤°ªÀ» °è»êÇغ¸ÀÚ. ÀÌ°ÍÀº, x¿Í yÀÇ msbµéÀ» t¿¡ ´ëÇؼ­ °è»êµÈ 7-ºñÆ® ij¸® °á°ú¿¡ µÎ °³ÀÇ 1-ºñÆ® ºÐÇÒµÈ µ¡¼ÀÀ» ÇÏ´Â ¹®Á¦¿¡ Áö³ªÁö ¾Ê´Â´Ù. ´ÙÇེ·´°Ôµµ 1-ºñÆ® ºÐÇÒ µ¡¼ÀÀº ÀÏ¹Ý exclusive or ¿¬»êÀ¸·Î ±¸ÇöµÇ¾î ÀÖ´Ù. ±×·¡¼­ ±× °á°ú´Â ´ÙÀ½°ú °°´Ù: ______________________________________________________________________ (t ^ ((x ^ y) & 0x80808080)) ______________________________________________________________________ ÁÁ´Ù, ±Û½ê, ÀÌ°ÍÀº ±×·¸°Ô ´Ü¼øÇÑ °ÍÀÌ ¾Æ´Ò ¼ö ÀÖ´Ù. °á±¹ 4°³ÀÇ µ¡¼ÀÀ» À§Çؼ­ 6¹ø ¿¬»êÀ» ¼öÇàÇÑ´Ù. ±×·¯³ª ¿¬»êÀÌ È½¼ö´Â Çʵ尡 ¸î°³Àΰ¡¿¡ µû¶ó ´Ù¸£Áö ¾Ê´Ù´Â °ÍÀ» ÁÖ¸ñÇÏÀÚ. ±×·¡¼­ Á» ´õ ¸¹Àº ÇʵåµéÀÌ ÀÖÀ¸¸é ¿ì¸®´Â ¼Óµµ Çâ»óÀ» ¾òÀ» ¼ö ÀÖ´Ù. »ç½Ç ÇʵåµéÀÌ ´ÜÀÏ ¿¬»ê(Á¤¼ö º¤ÅÍ)À¸·Î ·ÎµåµÇ°í ÀúÀåµÇ¾ú±â ¶§¹®¿¡, ¿ì¸®´Â ¾î¶² ½ÄÀ¸·Îµç ´Ü¼øÇÏ°Ô ¼Óµµ Çâ»óÇÒ ¼ö ÀÖÀ¸¸ç, ·¹Áö½ºÅÍ °¡¿ë¼ºÀº °³¼±µÉ ¼ö ÀÖ°í, µ¿Àû ÄÚµå ½ºÄÉÁÙ¸µ Á¾¼Ó¼ºÀÌ ´õ Àû´Ù(ºÎºÐ ¿öµå ÂüÁ¶¸¦ ÇÇÇÒ ¼ö Àֱ⠶§¹®¿¡). 4.2.2.3. ÇÊµå ¼öÄ¡ Á¦¾î(Controlling Field Values) ºÎºÐ ¿¬»ê ±¸Çö¿¡ ´ëÇÑ ´Ù¸¥ µÎ°¡Áö Á¢±Ù¹ý µÑ ´Ù ·¹Áö½ºÅ͵鿡 ´ëÇÑ °ø°£ È°¿ëÀ» ÃÖ´ëÈ­ÇÏ·Á°í ÇÏ´Â ¹Ý¸é¿¡, ´ë½Å ÇÊµå °ªµéÀ» Á¦¾îÇؼ­ ³»ºÎ-Çʵå ij¸®/ºô¸² À̺¥Æ®µéÀÌ Àý´ë ÀϾÁö ¾Êµµ·Ï ÇÏ´Â °ÍÀÌ Á» ´õ °è»ê Ãø¸é¿¡¼± È¿À²ÀûÀÌ´Ù. ¿¹¸¦ µé¾î¼­ ¿ì¸®°¡ ´õÇØÁø ¸ðµç ÇÊµå °ªµéÀÌ ¾î¶² ÇÊµå ¿À¹öÇ÷ο쵵 ÀϾÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾È´Ù¸é ºÎºÐ ´õÇϱ⠿¬»êÀº ÀϹÝÀûÀÎ ´õÇϱ⠸í·ÉÀ» »ç¿ëÇؼ­ ±¸ÇöµÉ ¼ö ÀÖ´Ù; »ç½Ç ÀÌ·± Á¦ÇÑÀÌ ÁÖ¾îÁö¸é ÀϹÝÀûÀÎ ´õÇϱ⠿¬»êÀÌ ´ÙÇü¼º(¿ªÀÚÁÖ: Çʵå Å©±â¿¡ µ¶¸³ÀÌ´Ù)ÀÎ °Íó·³ º¸ÀÌ°í ±³Á¤ ÄÚµå ¾øÀÌ ¾î¶² Çʵå Å©±âµé¿¡µµ »ç¿ë °¡´ÉÇÏ´Ù. ±×·¡¼­ ¾î¶»°Ô ÇÊµå °ªµéÀÌ Ä³¸®/ºô¸² À̺¥Æ®¸¦ ¹ß»ý½ÃÅ°Áö ¾Êµµ·Ï º¸ÀåÇÒ ¼ö Àִ°¡°¡ °ü°ÇÀÌ µÈ´Ù. ÀÌ·± Ư¼ºÀ» º¸ÀåÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº ÇÊµå °ªµéÀÇ ¹üÀ§¸¦ Á¦ÇÑÇÒ ¼ö ÀÖ´Â ºÎºÐÈ­µÈ ¸í·ÉµéÀ» ±¸ÇöÇÏ´Â °ÍÀÌ´Ù. Digital MAX º¤ÅÍ minimum°ú maximum ¸í·ÉµéÀº ³»ºÎ-Çʵå ij¸®/ºô¸²À» ÇÇÇϱâ À§Çؼ­ ÇÊµå °ªµéÀ» Ŭ¸³ÇÎ(¿ªÀÚÁÖ: ÀÚ¸§)ÇÏ´Â Çϵå¿þ¾îÀûÀÎ Áö¿øÀÌ´Ù. ±×·¯³ª ¿ì¸®°¡ ÇÊµå °ªµéÀÇ ¹üÀ§¸¦ È¿°úÀûÀ¸·Î Á¦ÇÑÇÒ ¼ö ¾ø´Â ºÎºÐÈ­µÈ ¸í·ÉµéÀ» °¡ÁöÁö ¸øÇÑ´Ù°í °¡Á¤ÇÏÀÚ... °©½Î°Ô ij¸®/ºô¸² À̺¥Æ®µéÀÌ ÀÎÁ¢ Çʵåµé »çÀÌ¿¡ °£¼·ÇÏÁö ¾Ê´Â´Ù°í º¸ÀåÇϵµ·Ï ÇÒ ¼ö ÀÖ´Â ÃæºÐÇÑ Á¶°ÇÀÌ Àִ°¡? ÀÌÀÇ ÇØ´äÀº »çÄ¢¿¬»ê Ư¼ºÀÇ ºÐ¼®¿¡ ÀÖ´Ù. µÎ k-ºñÆ® ¼ýÀÚµéÀ» ´õÇÏ´Â °ÍÀº ¸¹¾Æ¾ß k+1 ºñÆ®·Î µÈ ¼ýÀÚ¸¦ »ý¼ºÇÑ´Ù; ±×·¡¼­ k+1 ºñÆ®´Â ÀÏ¹Ý ¸í·ÉµéÀ» »ç¿ëÇÔ¿¡µµ ºÒ±¸ÇÏ°í ±×·± ¿¬»êÀ» ¾ÈÀüÇÏ°Ô ´ãÀ» ¼ö ÀÖ´Ù. ±×·¡¼­ ¿ì¸®ÀÇ ÀÌÀü ¿¹Á¦¾È¿¡¼­ 8-ºñÆ® ÇʵåµéÀÌ ÀÌÁ¦´Â 1-ºñÆ®ÀÇ "ij¸®/ºô¸² ¿ÏÃæ±â(spacers)"¸¦ °¡Áö´Â 7-ºñÆ® ÇʵåµéÀ̶ó°í °¡Á¤ÇÏÀÚ: ______________________________________________________________________ PE3 PE2 PE1 PE0 +----+-------+----+-------+----+-------+----+-------+ Reg0 | D' | D 6:0 | C' | C 6:0 | B' | B 6:0 | A' | A 6:0 | +----+-------+----+-------+----+-------+----+-------+ ______________________________________________________________________ 7-ºñÆ® µ¡¼ÀÀÇ º¤ÅÍ´Â ´ÙÀ½°ú °°ÀÌ ¼öÇàµÈ´Ù. ¾î¶² ºÎºÐ ¿¬»êÀ» ½ÃÀÛÇϱâ ÀÌÀü¿¡ ¸ðµç ij¸® ¿ÏÃæ ºñÆ®µé(A', B', C', ±×¸®°í D')°¡ 0À̶ó´Â °ªÀ» °®´Â´Ù°í °¡Á¤ÇÏÀÚ. ´Ü¼øÇÏ°Ô ÀÏ¹Ý µ¡¼À ¿¬»êÀ» ¼öÇàÇÔÀ¸·Î½á ¸ðµç ÇʵåµéÀº Á¤È®ÇÑ 7-ºñÆ® °ªµéÀ» ¾ò´Â´Ù; ±×·¯³ª ¾î¶² ¿ÏÃæ ºñÆ® °ªµéÀº ÀÌÁ¦ 1ÀÌ µÉ ¼ö ÀÖ´Ù. ¿ì¸®´Â ÀÌ°ÍÀ» ÀüÅëÀûÀÎ ¿¬»êÀÎ ¿ÏÃæ ºñÆ®µé¿¡ ´ëÇÑ ¸¶½ºÅ©-Á¦°Å¸¦ Çѹø ´õ ¼öÇàÇÔÀ¸·Î½á ±³Á¤ÇÒ ¼ö ÀÖ´Ù. ¿ì¸®ÀÇ 7-ºñÆ® Á¤¼ö º¤ÅÍ µ¡¼À, x+yÀº ±×·¡¼­ ´ÙÀ½°ú °°´Ù: ______________________________________________________________________ ((x + y) & 0x7f7f7f7f) ______________________________________________________________________ ÀÌ°ÍÀº ³×°³ÀÇ µ¡¼ÀÀ» µÎ ¸í·É¾î·Î ÁÙÀÎ °ÍÀÌ´Ù. ±×·¡¼­ ÀÌ°ÍÀº ÁÁÀº ¼Óµµ Çâ»óÀ» ºÐ¸íÈ÷ °¡Á®¿Ã °ÍÀÌ´Ù. ÁÖÀÇ ±íÀº µ¶ÀÚ(sharp reader)´Â ¿ÏÃæ ºñÆ®µéÀ» 0À¸·Î ¼³Á¤ÇÏ´Â °ÍÀº »©±â ¿¬»ê¿¡¼­ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ´«Ä¡Ã«À» °ÍÀÌ´Ù. ±×·¯³ª ±× ±³Á¤ ¹æ¹ýÀÌ ¾ÆÁÖ ´Ü¼øÇÏ´Ù. x-y¸¦ °è»êÇϱâ À§Çؼ­ ¿ì¸®´Â x¿¡ ÀÖ´Â ¿ÏÃæ ºñÆ®µéÀº ¸ðµÎ 1ÀÌ°í y¿¡ ÀÖ´Â ¿ÏÃæ ºñÆ®µéÀº ¸ðµÎ 0À̶ó´Â Ãʱâ Á¶°ÇÀ» È®½ÇÇÏ°Ô ÇÑ´Ù. °¡Àå ³ª»Û °æ¿ì¿¡ ¿ì¸®´Â ´ÙÀ½°ú °°Àº °ÍÀ» ¾òÀ» °ÍÀÌ´Ù: ______________________________________________________________________ (((x | 0x80808080) - y) & 0x7f7f7f7f) ______________________________________________________________________ ±×·¯³ª Ãß°¡ÀÇ ºñÆ®º° or ¿¬»êÀº Á¾Á¾, xÀÇ °ªÀ» »ý¼ºÇÏ´Â ¿¬»êÀÌ & 0x7f7f7f7f ´ë½Å¿¡ | 0x80808080À» ¸¶Áö¸· ½ºÅÜÀ¸·Î½á »ç¿ëÇÑ´Ù´Â °ÍÀ» È®½ÇÇÏ°Ô ÇÔÀ¸·Î½á, ÃÖÀûÈ­µÉ ¼ö ÀÖ´Ù. ¾î¶² ¹æ¹ýÀÌ SWAR ºÎºÐÈ­µÈ ¿¬»êµé¿¡ ´ëÇؼ­ »ç¿ëµÇ¾î¾ß ÇÒ °ÍÀΰ¡? ±× ´äÀº ´Ü¼øÇÏ°Ôµµ "°¡Àå ºü¸¥ ¼Óµµ(Çâ»ó)À» ³»´Â °ÍÀÌ¸é ¹«¾ùÀÌµç µÈ´Ù"´Â °ÍÀÌ´Ù. Èï¹Ì·Ó°Ôµµ »ç¿ëÇϱâ À§ÇÑ ÀÌ»óÀûÀÎ ¹æ¹ýÀº µ¿ÀÏÇÑ ±â°èÀ§¿¡¼­ µ¿ÀÛÇÏ´Â µ¿ÀÏÇÑ ÇÁ·Î±×·¥ ³»¿¡¼­(µµ) ¼­·Î ´Ù¸¥ Çʵå Å©±âµé¿¡ ´ëÇؼ­ ¼­·Î ´Ù¸¦ ¼ö ÀÖ´Ù. 4.2.3. Åë½Å°ú ŸÀÔ º¯È¯ ¿¬»ê(Communication & Type Conversion Operations) ºñ·Ï, À̹ÌÁö Çȼ¿µé¿¡ ´ëÇÑ ¸¹Àº ¿¬»êµéÀ» Æ÷ÇÔÇؼ­, ¾î¶² º´·Ä °è»êÀº ÇÑ º¤ÅÍÀÇ i¹ø° °ªÀº ÇÇ¿¬»êÀÚ º¤Å͵éÀÇ i¹ø° À§Ä¡¿¡ ³ªÅ¸³ª´Â °ªµé¸¸ÀÇ ÇÔ¼öÀ̶ó´Â ¼Ó¼ºÀ» °®°í ÀÖÁö¸¸, ÀÌ°ÍÀº ÀϹÝÀûÀ¸·Î ±×·± °æ¿ì°¡ ¾Æ´Ï´Ù. ¿¹¸¦ µé¾î¼­ ºÎµå·´°Ô Çϱâ(smoothing)¿Í °°Àº Çȼ¿ ¿¬»êµéÁ¶Â÷ ÀÎÁ¢ Çȼ¿µéÀ» ÇÇ¿¬»êÀÚµé·Î ¿ä±¸ÇÏ°í FFTµé°ú °°Àº º¯È¯µéµµ Á» ´õ º¹ÀâÇÑ(´ú Áö¿ªÈ­µÈ) Åë½Å ÆÐÅϵéÀ» ¿ä±¸ÇÑ´Ù. SWAR¸¦ À§ÇÑ, ºÎºÐÈ­µÇÁö ¾ÊÀº ½¬ÇÁÆ® ¿¬»êµéÀ» »ç¿ëÇÑ, 1-Â÷¿ø °¡Àå ±ÙÁ¢ÇÑ ÀÌ¿ô Åë½ÅÀ» È¿À²ÀûÀ¸·Î ±¸ÇöÇÏ´Â °ÍÀº ¾î·Á¿î ÀÏÀÌ ¾Æ´Ï´Ù. ¿¹¸¦ µé¾î¼­, PEi·ÎºÎÅÍ PE(i+1)·Î °ªÀ» À̵¿Çϱâ À§Çؼ­ ´Ü¼øÇÑ ½¬ÇÁÆ® ¿¬»êÀ¸·Îµµ ÃæºÐÇÏ´Ù. ÇʵåµéÀÌ 8-ºñÆ®ÀÇ ±æÀ̸¦ °¡Áø´Ù¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ °ÍÀÌ´Ù: ______________________________________________________________________ (x << 8) ______________________________________________________________________ ±×·¯³ª ÀÌ°ÍÀº Ç×»ó ±×·¸°Ô ´Ü¼øÇÏÁö ¾Ê´Ù. ¿¹¸¦ µé¾î¼­ PEi·ÎºÎÅÍ PE(i-1)·Î °ªÀ» À̵¿ÇÏ·Á¸é, ´Ü¼øÇÑ ½¬ÇÁÆ® ¿¬»êÀ¸·Îµµ ÃæºÐÇÏ´Ù. ±×·¯³ª C ¾ð¾î´Â ¿À¸¥ÂÊ ½¬ÇÁÆ®°¡ ºÎÈ£ ºñÆ®¸¦ º¸Á¸ÇÏ´ÂÁö ¾ÊÇÏ´ÂÁö¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í ¾î¶² ±â°èµéÀº ºÎÈ£ ºÙÀº ¿À¸¥ÂÊ ½¬ÇÁÆ®¸¸À» Áö¿øÇÑ´Ù. ±×·¡¼­ ÀϹÝÀûÀÎ °æ¿ì ¿ì¸®´Â ¹Ýµå½Ã ¸í½ÃÀûÀ¸·Î, ÀáÀçÀûÀÎ º¹»çµÈ(replicated) ºÎÈ£ ºñÆ®µéÀ» 0À¸·Î ¸¸µé¾î¾ß ÇÑ´Ù: ______________________________________________________________________ ((x >> 8) & 0x00ffffff) ______________________________________________________________________ "wrap-around Ä¿³Ø¼Çµé"À» ´õÇÏ´Â °Íµµ ¶ÇÇÑ ºÎºÐÈ­µÇÁö ¾ÊÀº ½¬ÇÁÆ®¸¦ »ç¿ëÇؼ­ »ó´çÈ÷ È¿À²ÀûÀÌ´Ù. ¿¹¸¦ µé¾î¼­ PEi·ÎºÎÅÍ °ªÀ» PE(i+1)·Î wraparound¸¦ ÀÌ¿ëÇؼ­ ¿Å±â·Á¸é: ______________________________________________________________________ ((x << 8) | ((x >> 24) & 0x000000ff)) ______________________________________________________________________ ½ÇÁúÀûÀÎ ¹®Á¦´Â Á» ´õ ÀϹÝÀûÀÎ Åë½Å ÆÐÅÏÀÌ ¹Ýµå½Ã ±¸ÇöµÇ¾î¾ß ÇÑ´À °æ¿ì¿¡ ¹ß»ýÇÑ´Ù. ´ÜÁö HP MAX ¸í·É¾î ÁýÇÕ¸¸ÀÌ ´ÜÀÏ ¸í·ÉÀ¸·Î ÇʵåµéÀÇ ÀÓÀÇ Àç¹èÄ¡¸¦ Áö¿øÇÑ´Ù. ÀÌ°ÍÀº Permute¶ó°í ºÒ¸°´Ù. ÀÌ Permute ¸í·ÉÀº ½ÇÁ¦·Î À̸§ÀÌ À߸ø Áö¾îÁ³´Ù; ÀÌ°ÍÀº ÇʵåµéÀÇ ÀÓÀÇÀÇ permutation (-- ¿ªÀÚÁÖ: ¼ø¿­À̶ó°í ¹ø¿ªÇÏÁö¸¸ ¼öÇп¡¼­´Â ÀÏÁ¤ °³¼öÀÇ °´Ã¼µéÀÇ ÀÚ¸® À̵¿À» ¸»ÇÑ´Ù--) ¸¸ ¼öÇàÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¹Ýº¹(repetition)µµ Çã¿ëÇÑ´Ù. °£´ÜÈ÷ ¸»Çؼ­ ÀÌ°ÍÀº ÀÓÀÇÀÇ x[y] ¿¬»êÀ» ¼öÇàÇÑ´Ù. ºÒÇàÇÏ°Ôµµ x[y]´Â ±×·± ¸í·É¾øÀÌ ±¸ÇöÇϱⰡ ¾ÆÁÖ ¾î·Æ´Ù. ÄÚµå ½ÃÄö½º´Â ÀϹÝÀûÀ¸·Î ±æ¸é¼­µµ ºñÈ¿À²ÀûÀÌ´Ù; »ç½Ç ÀÌ°ÍÀº ¼øÂ÷ÀûÀÎ ÄÚµåÀÌ´Ù. ÀÌ°ÍÀº ¾ÆÁÖ ½Ç¸Á½º·¯¿î °ÍÀÌ´Ù. MasPar MP1/MP2¿Í Thinking Machines CM1/CM2/CM200 SIMD ½´ÆÛÄÄÇ»ÅÍ¿¡¼­ÀÇ x[y]ÀÇ »ó´ëÀûÀ¸·Î ³ôÀº ¿¬»ê ¼Óµµ´Â ÀÌ·± ±â°èµéÀÇ ¼º´ÉÀÌ ÁÁ¾Ò´ø ÁÖ¿ä ÀÌÀ¯µé ÁßÀÇ ÇϳªÀ̾ú´Ù. ±×·¯³ª x[y]´Â Ç×»ó °¡Àå ±ÙÁ¢ÇÑ ÀÌ¿ô Åë½Åº¸´Ùµµ, ½ÉÁö¾î ±×·± ½´ÆÛÄÄÇ»Å͵鿡¼­Á¶Â÷, ´õ ´À¸®±â ¶§¹®¿¡ ¸¹Àº ¾Ë°í¸®ÁòµéÀÌ x[y] ¿¬»êµé¿¡ ´ëÇÑ ¼ö¿ä¸¦ ÃÖ¼ÒÈ­Çϱâ À§Çؼ­ °í¾ÈµÇ¾î ¿Ô¾ú´Ù. °£´ÜÇÏ°Ô ¸»Çؼ­ Çϵå¿þ¾î Áö¿ø¾øÀÌ ÀÌ°ÍÀº x[y]°¡ ÇÕ¹ýÀûÀÌÁö ¾ÊÀº °Íó·³ ¶Ç´Â Àû¾îµµ ½Ñ °ÍÀÌ ¾Æ´Ñ°Íó·³ SWAR ¾Ë°í¸®ÁòµéÀ» °³¹ßÇÏ´Â °ÍÀÌ °¡Àå ÁÁÀ» °ÍÀÌ´Ù. 4.2.4. ¼øȯ ¿¬»ê(Recurrence Operations) (Ãà¼Ò, ½ºÄµ µî) ¼øȯÀ̶õ °è»êµÇ´Â °ªµé°£ÀÇ ¿Ü¸é»ó ¼øÂ÷ÀûÀÎ °ü°è°¡ ÀÖ´Â °è»êÀ» ¸»ÇÑ´Ù. ±×·¯³ª ÀÌ·± ¼øȯÀÌ °áÇÕÀûÀÎ ¿¬»êµéÀ» Æ÷ÇÔÇÑ´Ù¸é ¼¼°³ÀÇ ±¸Á¶È­µÈ º´·Ä ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿© ±× °è»êÀ» ÀçÄÚµùÇÏ´Â °ÍÀÌ °¡´ÉÇÒ ¼ö ÀÖ´Ù. º´·ÄÈ­°¡ °¡´ÉÇÑ ¼øȯ(recurrence)ÀÇ ´ëºÎºÐÀÇ ÀϹÝÀûÀΠŸÀÔÀº ¾Æ¸¶µµ °áÇÕ Ãà¼Ò(associative reduction)À¸·Î ¾Ë·ÁÁø Ŭ·¡½ºÀÏ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­ ¾î¶² º¤ÅÍ °ªµéÀÇ µ¡¼ÀÀ» °è»êÇϱâ À§Çؼ­ ´ÙÀ½°ú °°Àº ¿ÏÀüÈ÷ ¼øÂ÷ÀûÀÎ C Äڵ带 ÀÛ¼ºÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù: ______________________________________________________________________ t = 0; for (i=0; i> 8) & 0x00ff00ff)); ______________________________________________________________________ µÎ¹ø° ½ºÅÜÀº ÀÌ·± µÎ°³ÀÇ 9-ºñÆ® °ªµéÀ» 16-ºñÆ® Çʵåµé¾È¿¡¼­, ´ÜÀÏ 10-ºñÆ® °á°ú¸¦ ¸¸µé±â À§ÇØ, ´õÇÑ´Ù: ______________________________________________________________________ ((t + (t >> 16)) & 0x000003ff) ______________________________________________________________________ ½ÇÁ¦, µÎ¹ø° ½ºÅÜÀº µÎ°³ÀÇ 16-ºñÆ® ÇÊµå µ¡¼ÀµéÀ» ¼öÇàÇÑ´Ù... ±×·¯³ª ¸Ó¸® 16-ºñÆ® µ¡¼ÀÀº Àǹ̰¡ ¾ø´Ù. ÀÌ°ÍÀÌ ¹Ù·Î ¿Ö °á°ú°¡ ´ÜÀÏ 10-ºñÆ® °á°ú °ª¿¡ ´ëÇؼ­ ¸¶½ºÅ·µÇ´Â°¡¿¡ ´ëÇÑ ÀÌÀ¯ÀÌ´Ù. "º´·Ä Á¢µÎ¾î(parallel prefix)" ¿¬»êÀ¸·Î ¾Ë·ÁÁø ½ºÄµÀº ´Ù¼Ò È¿À²ÀûÀ¸·Î ±¸ÇöÇϱⰡ ´õ ¾î·Æ´Ù. ÀÌ°ÍÀº ¿Ö³Ä¸é, Ãà¼Ò(reduction)°ú ´Ù¸£°Ô, ½ºÄµÀÌ ºÎºÐÀûÀÎ(partitioned) °á°ú¸¦ ³»±â ¶§¹®ÀÌ´Ù. ÀÌ·± ÀÌÀ¯·Î ½ºÄµÀº ¾ÆÁÖ ¸í¹éÇÑ, ºÎºÐÀûÀÎ ¿¬»êµéÀÇ ½ÃÄö½º¸¦ »ç¿ëÇؼ­ ±¸ÇöµÉ ¼ö ÀÖ´Ù. 4.3. ¸®´ª½º¿¡¼­ÀÇ MMX SWAR ¸®´ª½ºÀÌ °æ¿ì IA32 ÇÁ·Î¼¼¼­µéÀÌ ¿ì¸®ÀÇ ÁÖ¿ä °ü½É»çÀÌ´Ù. AMD, Cyrix, ±×¸®°í Intel ¸ðµÎ µ¿ÀÏÇÑ MMX ¸í·É¾îµéÀ» ±¸ÇöÇÑ´Ù°í ÇÏ´Â °ÍÀº ±Â´º½ºÀÌ´Ù. ±×·¯³ª MMX ¼º´ÉÀº ¼­·Î ´Ù¸£´Ù; ¿¹¸¦ µé¾î¼­ K6´Â MMX ÆÄÀÌÇÁ¶óÀÎÀ» ´ÜÁö Çϳª¸¸ °¡Áø´Ù - (ÀÌ¿¡ ¹ÝÇؼ­)Pentium with MMX´Â µÎ°³¸¦ °¡Áø´Ù. IntelÀÌ ¾ÆÁ÷µµ ÀÌ·± ¸ÛûÇÑ MMX ±¤°í¸¦ °è¼ÓÇÏ°í ÀÖ´Ù´Â °ÍÀÌ À¯ÀÏÇÑ ¹èµå´º½ºÀÌ´Ù. ;-) SWAR¸¦ À§ÇÏ¿© MMX¸¦ »ç¿ëÇÏ´Â µ¥´Â ½ÇÁ¦ ´ÙÀ½°ú °°Àº ¼¼°¡Áö Á¢±Ù¹ýÀÌ ÀÖ´Ù: 1. MMX ¶óÀ̺귯¸® ·çƾµéÀ» »ç¿ëÇÏ´Â °Í. Ưº°È÷ IntelÀº ¸î°¡Áö "¼º´É ¶óÀ̺귯¸®µéÀ»(performance libraries)", °³¹ßÇß´Ù. ÀÌ°ÍÀº ÀÏ¹Ý ¸ÖƼ¹Ìµð¾î ÀÛ¾÷µé¿¡ ´ëÇؼ­ ¼ÕÀ¸·Î-ÃÖÀûÈ­µÈ ´Ù¾çÇÑ ·çƾµéÀ» Á¦°øÇÑ´Ù. ÀûÀº ³ë·ÂÀ¸·Î ¸¹Àº ºñ-¸ÖƼ¹Ìµð¾î ¾Ë°í¸®ÁòµéÀÌ ´ëºÎºÐÀÇ ÄÄÇ»ÅÍ-ÁýÁß Æ÷¼ÇµéÀÇ ÀϺΰ¡ ÀÌ·± ¶óÀ̺귯¸® ·çƾµéÀ» Çϳª ¶Ç´Â ±×ÀÌ»ó »ç¿ëÇؼ­ ±¸ÇöµÉ¼ö ÀÖµµ·Ï ÀçÀÛ¾÷µÉ ¼ö ÀÖ´Ù. ÀÌ·± ¶óÀ̺귯¸®µéÀº ÇöÀç ¸®´ª½º¿¡ ´ëÇؼ­ »ç¿ëºÒ°¡´ÉÀÌÁö¸¸ Æ÷Æà °¡´ÉÇÒ ¼ö ÀÖ´Ù. 2. MMX ¸í·É¾îµéÀ» Á÷Á¢ »ç¿ëÇÏ´Â °Í. ÀÌ°ÍÀº ´Ù¼Ò µÎ°¡Áö Á¡µé¿¡ ÀÇÇؼ­ º¹ÀâÇÏ´Ù. ù¹ø° ¹®Á¦´Â MMX°¡ ÇÁ·Î¼¼¼­¿¡¼­ »ç¿ë°¡´ÉÇÏÁö ¾ÊÀ» ¼ö À־ ´ëü ±¸Çö¹°ÀÌ ¹Ýµå½Ã Á¦°øµÇ¾î¾ß ÇÒ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù. µÎ¹ø° ¹®Á¦´Â ¸®´ª½º¿¡¼­ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â IA32 ¾î¼Àºí·¯°¡ ÇöÀç MMX ¸í·É¾îµéÀ» ÀÌÇØÇÏÁö ¸øÇÑ´Ù´Â °ÍÀÌ´Ù. 3. ÀûÀýÇÑ MMX ¸í·É¾îµéÀ» Á÷Á¢ »ý¼ºÇÒ ¼ö ÀÖ´Â °í-¼öÁØ ¾ð¾î³ª ¸ðµâ ÄÄÆÄÀÏ·¯(module compiler)¸¦ »ç¿ëÇÏ´Â °Í. ±×·± ÅøµéÀº ÇöÀç °³¹ß Áß¿¡ ÀÖÁö¸¸ ¾î¶² °Íµµ ¾ÆÁ÷ ¸®´ª½º¿¡¼­ ¿ÏÀüÇÑ ±â´ÉÀ» °¡Áø °ÍÀÌ ¾ø´Ù. ¿¹¸¦ µé¾î¼­ ÆÛµà ´ëÇб³ ( )¿¡¼­ ¿ì¸®´Â ÇöÀç ¸í½ÃÀûÀ¸·Î º´·Ä C ¹æ¾ðÀ¸·Î ÀÛ¼ºµÈ ÇÔ¼öµéÀ» ÃëÇؼ­ C ÇÔ¼öµé·Î °¡´ÉÇÑ SWAR ¸ðµâµéÀ» »ý¼ºÇÒ ÄÄÆÄÀÏ·¯¸¦ °³¹ßÇÏ°í ÀÖÁö¸¸, ¾ÆÁ÷ MMX¸¦ Æ÷ÇÔÇؼ­ SWAR Áö¿øÀÌ °¡´ÉÇÑ °ÍÀÌ¸é ¹«¾ùÀÌµç »ç¿ëÇÑ´Ù. ù¹ø° ÇÁ·ÎÅäŸÀÔ ¸ðµâ ÄÄÆÄÀÏ·¯´Â 1996³â °¡À»¿¡ ¸¸µé¾îÁ³´Ù. ±×·¯³ª ÀÌ ±â¼úÀ» »ç¿ë°¡´ÉÇÑ »óűîÁö ¸¸µå´Â °ÍÀº óÀ½¿¡ ¿¹»óÇÑ °Íº¸´Ù ´õ ¿À·¡ °É¸®°í ÀÖ´Ù. ¿ä¾àÇϸé MMX SWAR´Â ¿©ÀüÈ÷ »ç¿ëÇϱ⿡ ¾î·Æ´Ù. ±×·¯³ª ¿©ºÐÀÇ ³ë·ÂÀ» Á¶±Ý ´õÇϸé À§¿¡¼­ ÁÖ¾îÁø µÎ¹ø° Á¢±Ù¹ýÀº Áö±Ýµµ »ç¿ëµÉ ¼ö ÀÖ´Ù. ´ÙÀ½Àº ±× ±âº»ÀÌ´Ù: 1. ÇÁ·Î¼¼¼­°¡ MMX¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¸é MMX¸¦ ¾µ ¼ö ¾ø´Ù. ´ÙÀ½ GCC ÄÚµå´Â MMX°¡ ¿©·¯ºÐÀÇ ÇÁ·Î¼¼¼­¿¡¼­ Áö¿øµÇ´ÂÁö ¾ÈµÇ´ÂÁö¸¦ Å×½ºÆ®ÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. Áö¿ø¾ÈµÇ¸é 0ÀÌ ¸®Åϵǰí Áö¿øµÇ¸é 0ÀÌ ¾Æ´Ñ °ªÀÌ ¸®ÅϵȴÙ. ___________________________________________________________________ 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; } ___________________________________________________________________ 2. MMX ·¹Áö½ºÅÍ´Â ±âº»ÀûÀ¸·Î GCC°¡ unsigned long long¶ó°í ºÎ¸£´Â °Í Áß Çϳª¸¦ °®°í ÀÖ´Ù. ±×·¡¼­ ÀÌ·± ŸÀÔÀÇ ¸Þ¸ð¸®-±â¹Ý º¯¼öµéÀº ¿©·¯ºÐÀÇ MMX ¸ðµâµé°ú ±×µéÀ» È£ÃâÇÏ´Â C ÇÁ·Î±×·¥µé°£ÀÇ Åë½Å ¸ÞÄ«´ÏÁòÀÌ µÈ´Ù. ¶Ç´Â MMX µ¥ÀÌÅ͸¦ ÀÓÀÇÀÇ 64-ºñÆ® Á¤·ÄµÈ µ¥ÀÌÅÍ ½ºÆ®·°ÃÄ·Î ¼±¾ðÇÒ¼öµµ ÀÖ´Ù (¿©·¯ºÐÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀ» unsigned long long Çʵ带 °¡Áö´Â unionÀÇ Å¸ÀÔÀ¸·Î ¼±¾ðÇÔÀ¸·Î½á 64-ºñÆ® Á¤·ÄÀÌ µÇµµ·Ï ÇÏ´Â °ÍÀÌ Æí¸®ÇÏ´Ù). 3. MMX°¡ »ç¿ë°¡´ÉÀ̶ó¸é ¿©·¯ºÐÀº, °¢ ¸í·ÉÀ» ÀÎÄÚµåÇÏ´Â .byte ¾î¼Àºí¸® Áö½Ã¾î¸¦ »ç¿ëÇÑ ¿©·¯ºÐÀÇ MMX Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ MMX ¸í·É¾î PADDB MM0,MM1´Â ´ÙÀ½°ú °°ÀÌ GCC ÀÎ-¶óÀÎ ¾î¼Àºí¸® ÄÚµå·Î ÀÎÄÚµùµÉ ¼ö ÀÖ´Ù: ___________________________________________________________________ __asm__ __volatile__ (".byte 0x0f, 0xfc, 0xc1\n\t"); ___________________________________________________________________ MMX´Â ºÎµ¿ ¼Ò¼ýÁ¡ ¿¬»êµé¿¡ ´ëÇؼ­ »ç¿ëµÇ´Â Çϵå¿þ¾î¿Í µ¿ÀÏÇÑ °ÍµéÀ» »ç¿ëÇÑ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ. ±×·¡¼­ MMX ÄÚµå¿Í ¼­·Î ¼¯ÀÎ ÄÚµå´Â ºÎµ¿ ¼Ò¼ýÁ¡ ¿¬»êµéÀ» È£ÃâÇؼ­´Â ¾ÈµÈ´Ù. ºÎµ¿ ¼Ò¼ýÁ¡ ½ºÅõµ ¶ÇÇÑ MMX Äڵ带 ½ÇÇàÇϱâ Àü¿¡ ºñ¿öÁ®¾ß ÇÑ´Ù; ºÎµ¿ ¼Ò¼ýÁ¡ ½ºÅÃÀº ÀϹÝÀûÀ¸·Î ºÎµ¿ ¼Ò¼ýÁ¡À» »ç¿ëÇÏÁö ¾Ê´Â C ÇÔ¼öÀÇ ½ÃÀÛÁ¡¿¡¼­ ºñ¿öÁø´Ù. 4. ´ÙÀ½°ú °°ÀÌ ÄÚµùµÉ ¼ö ÀÖ´Â °Íó·³, EMMS ¸í·ÉÀ» ½ÇÇàÇÔÀ¸·Î½á, MMX Äڵ带 Á¾·áÇÏÀÚ: ___________________________________________________________________ __asm__ __volatile__ (".byte 0x0f, 0x77\n\t"); ___________________________________________________________________ À§ÀÇ °ÍÀÌ ¾ÆÁÖ ÀÌ»óÇÏ°í Á¶ÀâÇÏ°Ô º¸ÀÎ´Ù¸é ±×·¸´Ù. ±×·¯³ª MMX´Â ¿©ÀüÈ÷ ²Ï Àþ´Ù... ÀÌ ¹®¼­ÀÇ ³ªÁß ¹öÀüÀº MMX SWAR¸¦ ÇÁ·Î±×·¥ÇÏ´Â Á» ´õ ³ªÀº ¹æ¹ýµéÀ» Á¦°øÇÒ °ÍÀÌ´Ù. 5. ¸®´ª½º°¡ È£½ºÆ®ÇÏ´Â ºÎ¼Ó ÇÁ·Î¼¼¼­(Linux-Hosted Attached Processors) ÀÌ·± Á¢±ÙÀº ¿ä»õ º°·Î ÀαⰡ ¾øÁö¸¸ ´Ù¸¥ º´·Ä ó¸® ¹æ¹ýµéÀÌ ¸®´ª½º ½Ã½ºÅÛÀ» È£½ºÆ®¿¡ ºÎ¼Ó º´·É ÄÄÇ»Æà ½Ã½ºÅÛÀ¸·Î »ç¿ëÇÔÀ¸·Î½á ³·Àº ºñ¿ë¿¡ °í¼º´ÉÀ» ¾ò´Â °ÍÀº °ÅÀÇ ºÒ°¡´ÉÇÏ´Ù. ¹®Á¦´Â ¼ÒÇÁÆ®¿þ¾î Áö¿øÀÌ ¾ÆÁÖ ÀÛ´Ù´Â °ÍÀÌ´Ù; ¿©·¯ºÐÀº °ÅÀÇ È¥ÀÚÀÌ´Ù. 5.1. ¸®´ª½º PC´Â ÁÁÀº È£½ºÆ®ÀÌ´Ù(A Linux PC Is A Good Host) ÀϹÝÀûÀ¸·Î ºÎ¼Ó º´·Ä ÇÁ·Î¼¼¼­µéÀº ƯÁ¤ ŸÀÔÀÇ ±â´ÉµéÀ» ¼öÇàÇÏ´Â µ¥ Àü¹®È­µÇ´Â °æÇâÀÌ ÀÖ´Ù. ¿©·¯ºÐÀÌ ¾î¼¸é È¥ÀÚÀÏ·±Áö ¸ð¸¥´Ù´Â »ç½Ç¿¡ ±âÁ×±â Àü¿¡ ´ÙÀ½°ú °°Àº °ÍÀ» ÀÌÇØÇÏ´Â °ÍÀº À¯¿ëÇÏ´Ù. Áï, ¸®´ª½º PC°¡ ÀûÀýÇÏ°Ô Æ¯Á¤ ½Ã½ºÅÛÀ» È£½ºÆ®Çϵµ·Ï ÇÏ´Â °ÍÀº ¾î·Á¿ï ¼ö ÀÖÀ»Áö¶óµµ ¸®´ª½º PC´Â ÀÌ·± ŸÀÔÀ¸·Î »ç¿ëµÇ´Â µ¥¿¡´Â ÀûÀýÇÑ ¸î°³ ¾ÈµÇ´Â Ç÷§Æûµé Áß ÇϳªÀÌ´Ù. PCµéÀº µÎ°¡Áö ÁÖ¿äÇÑ ÀÌÀ¯ ¶§¹®¿¡ ÁÁÀº È£½ºÆ®ÀÌ´Ù. ù¹ø°´Â ½Î°í ½¬¿î È®Àå ´É·ÂÀÌ´Ù; ´õ ¸¹Àº ¸Þ¸ð¸®, µð½ºÅ©, ³×Æ®¿÷ µî°ú °¡Àº ¸®¼Ò½ºµéÀÌ ½±°Ô PC¿¡ Ãß°¡µÈ´Ù. µÎ¹ø°´Â ÀÎÅÍÆäÀ̽ºÀÇ ¿ëÀ̼ºÀÌ´Ù. ISA¿Í PCI ¹ö½º ÇÁ·ÎÅäŸÀÔ Ä«µåµéÀÌ ³Î¸® »ç¿ë°¡´ÉÇÒ»Ó¸¸ ¾Æ´Ï¶ó º´·Ä Æ÷Æ®´Â ¿ÏÀüÈ÷ ºñ-ħ·«ÀûÀÎ ÀÎÅÍÆäÀ̽º·Î Àû´çÇÑ ¼º´ÉÀ» Á¦°øÇÑ´Ù. IA32 ºÐ¸®µÈ I/O ½ºÆäÀ̽º´Â ¶ÇÇÑ °³º° I/O Æ÷Æ® ÁÖ¼ÒµéÀÇ ·¹º§¿¡¼­ Çϵå¿þ¾î I/O ÁÖ¼Ò ÇÁ·ÎÅؼÇÀ» Á¦°øÇÔÀ¸·Î½á ÀÎÅÍÆäÀ̽º¸¦ ¿ëÀÌÇÏ°Ô ÇÑ´Ù. ¸®´ª½º´Â ¶ÇÇÑ ÁÁÀº È£½ºÆ® OSÀÌ´Ù. Àüü ¼Ò½º ÄÚµåÀÇ ÀÚÀ¯·Î¿î »ç¿ë °¡´É¼º, ¸¹Àº "ÇÙÅ·" Ä«À̵åµé, À̵éÀº ¸í¹éÈ÷ ´ë´ÜÇÑ µµ¿òÀÌ´Ù. ±×·¯³ª ¸®´ª½º´Â ¶ÇÇÑ ±¦ÂúÀº °ÅÀÇ-½Ç-½Ã°£ ½ºÄÉÁÙ¸µÀ» Á¦°øÇÏ°í ¿¡´Â ¸®´ª½ºÀÇ ÁøÁ¤ÇÑ ½Ç-½Ã°£ ¹öÀüÁ¶Â÷ ÀÖ´Ù. ¾Æ¸¶µµ ¿ÏÀüÇÑ UNIX ȯ°æÀ» Áö¿øÇÏ´Â ¹Ý¸é ¸®´ª½º´Â Microsoft DOS ¶Ç´Â Windows¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï ÀÛ¼ºµÈ °³¹ß ÅøµéÀ» Áö¿øÇÏ´Â °ÍÀÌ Á¶±Ý ´õ Áß¿äÇÑ »ç½ÇÀÌ´Ù. MSDOS ÇÁ·Î±×·¥µéÀº, ±ÛÀÚ ±×´ë·Î MSDOS¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Â ÇÁ·ÎÅØƼµå °¡»ó ¸Ó½®À» Á¦°øÇÏ´Â, dosemu¸¦ »ç¿ëÇÑ ¸®´ª½º ÇÁ·Î¼¼½º ¾È¿¡¼­ ½ÇÇàµÉ ¼ö ÀÖ´Ù. ¸®´ª½º´Â Á» ´õ Á÷Á¢ÀûÀ¸·Î Windows 3.xx ÇÁ·Î±×·¥µé¿¡ ´ëÇؼ­ Áö¿øÇÑ´Ù: wine, , °ú °°Àº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î´Â UNIX/X ȯ°æ¾È¿¡¼­ Á¤È®ÇÏ°í È¿À²ÀûÀ¸·Î ´ëºÎºÐÀÇ ÇÁ·Î±×·¥µéÀ» ½ÇÇàÇÒ¸¸Å­ ÃæºÐÈ÷ Àß Windows 3.11À» ½Ã¹Ä·¹ÀÌÆ®ÇÑ´Ù. ´ÙÀ½ µÎ ¼½¼ÇµéÀº ³»°¡ ¸®´ª½º¿¡¼­ Áö¿øµÇ¾úÀ¸¸é ÇÏ°í ¹Ù¶ó´Â ºÎ¼Ó º´·Ä ½Ã½ºÅ۵鿡 ´ëÇÑ ¿¹Á¦µéÀ» Á¦°øÇÑ´Ù.... 5.2. ±×°Í¿¡ DSP¸¦ Àû¿ëÇߴ°¡(Did You DSP That)? °í-¼º´É DSP(µðÁöÅÐ ½Ã±×³Î ó¸®(Digital Signal Processing)) ÇÁ·Î¼¼¼­ ½ÃÀåÀÌ ¹ø¼ºÁßÀÌ´Ù. ºñ·Ï ÀÌ·± ĨµéÀÌ ÀϹÝÀûÀ¸·Î ¾îÇø®ÄÉÀ̼Ç-Á¾¼ÓÀûÀÎ ½Ã½ºÅ۵鿡 ÀÓº£µùµÇµµ·Ï °í¾ÈµÈ °ÍÀÌÁö¸¸, ±×µéÀº ¶ÇÇÑ °Å´ëÇÑ ºÎ¼Ó º´·Ä ÄÄÇ»ÅÍµé ¶ÇÇÑ ¸¸µé°í ÀÖ´Ù. ¿Ö ±×·±°¡? o Texas Instruments ( ) TMS320¿Í Analog Devices ( ) SHARC DSP Æйи®¿Í °°Àº ¸¹Àº °ÍµéÀÌ "Á¢Âø(glue)" ·ÎÁ÷ÀÌ °ÅÀÇ ¾ø´Â ¶Ç´Â ÀüÇô ¾ø´Â º´·Ä ±â°èµéÀ» ¸¸µéµµ·Ï °íµÈ °ÍÀÌ´Ù. o À̵éÀº ¾ÆÁÖ, Ưº°È÷ MIP³ª MFLOP ´ç ºñ¿ëÀÌ, ½Î´Ù. ±âº» Áö¿ø ·ÎÁ÷ÀÇ ºñ¿ëÀ» Æ÷ÇÔÇؼ­ DSP ÇÁ·Î¼¼¼­°¡ ºñ±³°¡´ÉÇÑ ¼º´ÉÀ» °¡Áö´Â PC ÇÁ·Î¼¼¼­ÀÇ ºñ¿ëÀÇ 10ºÐÀÇ 1À̶ó°í ÇÑ´Ù. o ±×µéÀº ¸¹Àº Àü·ÂÀ» ¾²°Å³ª ¸¹Àº ¿­À» ¹ß»ýÇϰųª ÇÏÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº ÀüÅëÀûÀÎ ÇǾ¾ÀÇ ÆÄ¿ö ¼­ÇöóÀÌ¿¡ ÀÇÇÑ Àü·ÂÀ» ÀÌ·± ÀÏ·ÃÀÇ Ä¨µé¿¡ °ø±ÞÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù - ±×¸®°í ±×°ÍµéÀ» ¿©·¯ºÐÀÇ ÇǾ¾ ÄÉÀ̽º¿¡ ³Ö¾îµµ ÀÌ°ÍÀÌ ¿ÀºìÀÌ µÇÁö ¾ÊÀ»°ÍÀ̶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù. o °í-¼öÁØ (¿¹, C) ÄÄÆÄÀÏ·¯µéÀÌ Àß »ç¿ëÇÒ °Í°°Áö ¾ÊÀº ´ëºÎºÐÀÇ DSP ¸í·É¾î ÁýÇÕ - ¿¹¸¦ µé¾î¼­ "ºñÆ® ¿ª¹æÇâ ¾îµå·¹½Ì( o °í-¼öÁØ (¿¹, C) ÄÄÆÄÀÏ·¯µéÀÌ Àß »ç¿ëÇÒ °Í°°Áö ¾ÊÀº ´ëºÎºÐÀÇ DSP ¸í·É¾î ÁýÇÕ¿¡´Â ÀÌ»óÇÏ°Ô º¸ÀÌ´Â °ÍµéÀÌ ÀÖ´Ù - ¿¹¸¦ µé¾î¼­ "ºñÆ® ¿ª¹æÇâ ¾îµå·¹½Ì(Bit Reverse Addressing)". ºÎ¼Ó º´·Ä ½Ã½ºÅÛÀ» »ç¿ëÇÏ¸é ±×·± È£½ºÆ®¿¡¼­ ´ëºÎºÐÀÇ Äڵ带 Á÷¼±ÀûÀ¸·Î(straightforwardly) ÄÄÆÄÀÏÇÏ°í ½ÇÇàÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ÀÌ¿¡ ¹ÝÇؼ­ DSP À§¿¡¼­ ½Ã°£À» ´ëºÎºÐ Àâ¾Æ¸Ô´Â ¸î°³ ¾ÈµÇ´Â ¾Ë°í¸®ÁòµéÀº Á¶½É½º·´°Ô ¼ÕÀ¸·Î-Æ©´×µÈ ÄÚµå·Î ½ÇÇàµÈ´Ù. o ÀÌ·± DSP ÇÁ·Î¼¼¼­µéÀº ½ÇÁ¦ UNIX-like OS¿¡¼­ ½ÇÇàµÇµµ·Ï °í¾ÈµÈ °ÍÀÌ ¾Æ´Ï°í ÀϹÝÀûÀ¸·Î µ¶¸³-½ÇÇàÇü ¹ü¿ë ÄÄÇ»ÅÍ ÇÁ·Î¼¼¼­µé°ú ¸¶Âù°¡Áö·Î ÁÁÁö ¾Ê´Ù. ¿¹¸¦ µé¾î¼­ ¸¹Àº °ÍµéÀÌ ¸Þ¸ð¸® °ü¸® Çϵå¿þ¾î¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù. ´Ù¸¥ ¸»·Î ÇÏ¸é ±×µéÀº Á» ´õ ¹ü¿ë ±â°èµé¿¡ ÀÇÇؼ­ È£½ºÆ®µÇ¾î¾ß °¡Àå Àß ÀÛµ¿µÈ´Ù... ¸®´ª½º¿Í °°Àº. ¾î¶² ¿Àµð¿À Ä«µåµé°ú ¸ðµ©µéÀº ¸®´ª½º µå¶óÀ̹öµéÀÌ ¾ï¼¼½ºÇÒ ¼ö ÀÖ´Â DSP ÇÁ·Î¼¼¼­µéÀ» Æ÷ÇÔÇÏ°í ÀÖÁö¸¸ ³×°³ ¶Ç´Â ±× ÀÌ»óÀÇ DSP ÇÁ·Î¼¼¼­µéÀ» °¡Áö´Â ºÎ¼Ó º´·Ä ½Ã½ºÅÛÀ» »ç¿ëÇÏ¸é ±× ´ñ°¡°¡ Å©´Ù. Texas Instruments TMS320 ½Ã¸®Áî, , ´Â ¾ÆÁÖ ¿À·§µ¿¾È ¾ÆÁÖ ÀαⰡ ÀÖ¾ú°í TMS320-±â¹Ý º´·Ä ÇÁ·Î¼¼¼­¸¦ ¸¸µé±â°¡ ½¬¾ú±â ¶§¹®¿¡ »ç¿ë°¡´ÉÇÑ ±×·± ½Ã½ºÅÛµéÀÌ ²Ï ÀÖ¾ú´Ù. TMS320¿¡´Â Á¤¼ö-¸¸ÀÇ ¹öÀü°ú ºÎµ¿-¼Ò¼ýÁ¡ °¡´É ¹öÀüµéÀÌ ÀÖ´Ù; ´õ ¿À·¡µÈ µðÀÚÀεéÀº ´Ù¼Ò ºñÀÏ»óÀûÀÎ ´ÜÀÏ-Á¤¹Ðµµ ºÎµ¿-¼Ò¼ýÁ¡ Æ÷¸äÀ» »ç¿ëÇßÁö¸¸ »õ·Î¿î ¸ðµ¨µéÀº IEEE Æ÷¸äµéÀ» Áö¿øÇÑ´Ù. ¿À·¡µÈ TMS320C4x ('C4x ·Î ¾Ë·ÁÁü)´Â TI-Á¾¼ÓÀûÀÎ ´ÜÀÏ-Á¤¹Ðµµ ºÎµ¿-¼Ò¼ýÁ¡ Æ÷¸äÀ» »ç¿ëÇؼ­ 80 MFLOPS±îÁö ȹµæÇß´Ù; ÀÌ¿¡ ¹ÝÇؼ­ ´ÜÀÏ 1 GFLOPS ´ÜÀÏ-Á¤¹Ðµµ ¶Ç´Â IEEE ºÎµ¿ ¼Ò¼öÁ¡ ¿¬»ê¿¡ ´ëÇؼ­ 420 MFLOPS ¹è-Á¤¹Ðµµ±îÁö Á¦°øÇÒ °ÍÀÌ´Ù. ¸ÖƼÇÁ·Î¼¼¼­·Î ÀÌ·± ĨµéÀÇ ±×·ìÀ» ¼³Á¤ÇÏ´Â °ÍÀÌ ½¬¿ï»Ó ¾Æ´Ï¶ó ´ÜÀÏ Ä¨¾È¿¡¼­µµ 'C8x ¸ÖƼÇÁ·Î¼¼¼­´Â µÎ°³ ¶Ç´Â ³×°³ÀÇ Á¤¼ö ºÎ¼Ó DSPµé°ú ÇÔ²² 100 MFLOPS IEEE ºÎµ¿-¼Ò¼ýÁ¡ RISC ¸¶½ºÅÍ ÇÁ·Î¼¼¼­¸¦ Á¦°øÇÒ °ÍÀÌ´Ù. ¸î°³ÀÇ ºÎ¼Ó º´·Ä ½Ã½ºÅ۵麸´Ù ´õ ¸¹ÀÌ »ç¿ëµÈ¹Ù ÀÖ´Â ´Ù¸¥ DSP ÇÁ·Î¼¼¼­ Æйи®´Â Analog Devices »çÀÇ SHARC(ADSP-2106x·Î ¾Ë·ÁÁü)ÀÌ´Ù. ÀÌ·± ĨµéÀº ¿ÜºÎ Á¢Âø(glue) ³í¸® ¾øÀÌ 6°³ÀÇ ÇÁ·Î¼¼¼­ °øÀ¯ ¸Þ¸ð¸® ¸ÖƼÇÁ·Î¼¼¼­·Î ¼³Á¤µÉ ¼ö ÀÖ´Ù. ±×¸®°í Á¡ ´õ Å« ½Ã½ºÅ۵鵵 ¿©¼¸°³ÀÇ 4-ºñÆ® links/chip(Ĩ´ç ¸µÅ©)¸¦ »ç¿ëÇؼ­ ¼³Á¤µÉ ¼ö ÀÖ´Ù. ´ëºÎºÐÀÇ ´õ Å« ½Ã½ºÅÛµéÀº ±º»ç¿ë ¾îÇø®ÄÉÀ̼ÇÀ» ¸ñÇ¥·Î ÇÏ´Â °Í °°°í ¾à°£ ºñ½Î´Ù. ±×·¯³ª Integrated Computing Engines, Inc., , ȸ»ç´Â GreenICE¶ó°í ºÒ¸®´Â Èï¹Ì·Î¿î Á¶±×¸¸ µÎ-º¸µå PCI Ä«µå ¼ÂÀ» ¸¸µé¾ú´Ù. ÀÌ À¯´ÖÀº 16°³ÀÇ SHARC ÇÁ·Î¼¼¼­µé ¹è¿­À» °¡Áö°í ÀÖ°í ´ÜÀÏ-Á¤¹Ðµµ IEEE Æ÷¸äÀ» »ç¿ëÇؼ­ ¾à 1.9 GFLOPSÀÇ ÃÖ°í ¼Óµµ¸¦ ³¾ ¼ö ÀÖ´Ù. GreenICE´Â $5,000 ¹Ì¸¸ÀÇ °¡°ÝÀÌ´Ù. ³» ÀÇ°ßÀ¸·Î´Â ºÎ¼Ó º´·É DSPµéÀº ½ÇÁ¦·Î ¸®´ª½º º´·Ä ó¸® Ä¿¹Â³ÊƼ°¡ ´õ ¸¹Àº ½Å°æÀ» ½á¾ß ¸¶¶¥ÇÒ °ÍÀ̶ó°í »ý°¢ÇÑ´Ù.... 5.3. FPGAs°ú Àç¼³Á¤ °¡´ÉÇÑ ³í¸® ¿¬»ê º´·Ä 󸮰¡ °¡Àå ³ôÀº ¼º´ÉÇâ»óÀ» ¾ò±â À§ÇÑ °ÍÀÌ ÀüºÎÀ̶ó¸é ¿Ö Ä¿½ºÅÒ Çϵå¿þ¾î¸¦ ¸¸µéÁö ¾Ê´Â°¡? ±Û½ê, ¿ì¸®´Â ¸ðµÎ ´äÀ» ¾Ë°í ÀÖ´Ù; ÀÌ°ÍÀº ³Ê¹« ºñ½Î¸ç °³¹ßÇϱ⿡ ½Ã°£ÀÌ ³Ê¹« ¿À·¡ °É¸®°í Á¶±ÝÀÌ¶óµµ ¾Ë°í¸®ÁòÀ» º¯°æÇÒ ¶§¸é ¾µ¸ð¾ø´Â °ÍÀÌ µÇ¹ö¸°´Ù. ±âŸ µîµî. ±×·¯³ª ÀüÀÚÀûÀ¸·Î ÀçÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ FPGA(Çʵå ÇÁ·Î±×·¡¸Óºí °ÔÀÌÆ® ¾î·¹ÀÌ(Field Programmable Gate Arrays))µéÀÇ ¿äÁòÀÇ Áøº¸°¡ ÀÌ·± Á¦¾àµéÀÇ ´ëºÎºÐÀ» ¹«·ÂÈ­½ÃÄÑ ¹ö·È´Ù. Áö±Ý °ÔÀÌÆ® ¹ÐÁýµµ°¡ ÃæºÐÈ÷ ³ô¾Æ¼­ ´Ü¼øÇÑ Àüü ÇÁ·Î¼¼¼­°¡ ÇϳªÀÇ FPGA¿¡ µé¾î°¡µµ·Ï ¸¸µé¾îÁú ¼ö ÀÖ°í FPGA¸¦ Àç¼³Á¤(ÀçÇÁ·Î±×·¥)ÇÏ´Â °Íµµ ¶ÇÇÑ, ÇÑ ¾Ë°í¸®ÁòÀÇ ÇÑ ±¹¸é¿¡¼­ ´ÙÀ½À¸·Î ¿Å°Ü°¥ ¶§¶óµµ Àç¼³Á¤ÇÏ´Â °ÍÀÌ Å¸´çÇÒ¸¸Å­ÀÇ ¼öÁرîÁö ³·¾ÆÁ³´Ù. ÀÌ ³»¿ëÀº ½ÉÀåÀÌ ¾àÇÑ »ç¶÷µéÀ» À§ÇÑ °ÍÀÌ ¾Æ´Ï´Ù: ¿©·¯ºÐÀº FPGA ¼³Á¤¿¡ ´ëÇؼ­, ¸®´ª½º È£½ºÆ® ½Ã½ºÅÛ À§ÀÇ ÇÁ·Î±×·¥µé¿¡ ´ëÇؼ­ ÀÎÅÍÆäÀ̽ºÇÏ´Â ·Î¿ì-·¹º§ Äڵ带 ÀÛ¼ºÇÏ´Â ÀÏ°ú ÇÔ²², VHDL°ú °°Àº Çϵå¿þ¾î ±â¼ú(description) ¾ð¾îµé·Î ÀÛ¾÷ÇØ¾ß ÇÑ´Ù. ±×·¯³ª FPGAÀÇ ºñ¿ëÀº ³·°í Ưº°È÷ ³·Àº-Á¤¹Ðµµ Á¤¼ö µ¥ÀÌÅÍ(½ÇÁ¦, ÀÌ·± Àç·áÀÇ Á¶±×¸¸ »óÀ§ÁýÇÕ¿¡ ´ëÇؼ­´Â SWAR°¡ ´õ ³´´Ù)¿¡ ´ëÇؼ­ ÀÛ¾÷ÇÏ´Â ¾Ë°í¸®Áòµé¿¡ ´ëÇؼ­ ºñ¿ëÀÌ ³·°í, FPGA´Â ¿©·¯ºÐÀÌ µ¥ÀÌÅ͸¦ Á¦°øÇÏ´Â ¼Óµµ¸¸Å­ ºü¸£°Ô º¹ÀâÇÑ ¿¬»êµéÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ´Ü¼øÇÑ FPGA-±â¹Ý ½Ã½ºÅÛµéÀº À¯ÀüÀÚ µ¥ÀÌÅͺ£À̽º °Ë»ö¿¡¼­ ½´ÆÛÄÄÇ»Åͺ¸´Ù ´õ ³ªÀº ¼Óµµ¸¦ ¸¸µç´Ù. ÀûÀýÇÑ FPGA-±â¹Ý Çϵå¿þ¾î¸¦ ¸¸µå´Â ´Ù¸¥ ȸ»çµéÀÌ ÀÖÁö¸¸ ´ÙÀ½°ú °°Àº µÎ ȸ»ç°¡ ÁÁÀº »ùÇÃÀ» Á¦½ÃÇÑ´Ù. Virtual Computer Company´Â µ¿ÀûÀ¸·Î Àç¼³Á¤ °¡´ÉÇÑ SRAM-±â¹Ý Xilinx FPGAµéÀ» »ç¿ëÇÑ ´Ù¾çÇÑ Á¦Ç°µéÀ» Á¦°øÇÑ´Ù. ±×µéÀÇ 8/16ºñÆ® "°¡»ó ISA ÇÁ·ÎÅä º¸µå(Virtual ISA Proto Board)" ´Â $2,000 ¹Ì¸¸ÀÌ´Ù. ¾ËÅ׶ó(Altera) ARC-PCI(Altera Reconfigurable Computer, PCI bus), , ´Â ºñ½ÁÇÑ Å¸ÀÔÀÇ Ä«µåÀÌÁö¸¸ ¾ËÅ׶ó FPGAµé°ú ISA°¡ ¾Æ´Ñ PCI ¹ö½º ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÑ´Ù. ¸¹Àº ¼³°è Åøµé, Çϵå¿þ¾î ±â¼ú(description)¾ð¾î, ÄÄÆÄÀÏ·¯, ¶ó¿ìÅÍ, ¸ÊÆÛ µîÀº À©µµ¿ìÁ DOS¿¡¼­¸¸ ½ÇÇàµÇ´Â ¿ÀºêÁ§Æ® ÄÚµå·Î Á¦°øµÈ´Ù. È£½ºÆ® ÇǾ¾¿¡´Ù DOS/Windows¸¦ °¡Áø µð½ºÅ© ÆÄƼ¼ÇÀ» °¡Áö°í ±×°ÍµéÀÌ ÇÊ¿äÇÒ ¶§¸¶´Ù ¸®ºÎÆÃÇÑ´Ù. ±×·¯³ª ÀÌµé ¼ÒÇÁÆ®¿þ¾î ÆÑÅ°ÁöµéÀº ¸®´ª½º¿¡¼­ dosemu¸¦ »ç¿ëÇؼ­ ¶Ç´Â, wine¿Í °°Àº À©µµ¿ìÁî ¿¡¹Ä·¹ÀÌÅ͸¦ »ç¿ëÇؼ­ ½ÇÇàµÉ ¼ö ÀÖ´Ù. 6. ÀϹÝÀûÀÎ °ü½É°Å¸® Áß¿¡¼­ ÀÌ ¼½¼Ç¿¡¼­ ´Ù·ç¾îÁö´Â ³»¿ëÀº ¸ðµç ¸®´ª½ºÀÇ ³×°¡Áö º´·Ä ó¸® ¸ðµ¨µé¿¡ Àû¿ëµÇ´Â °ÍÀÌ´Ù. 6.1. ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í ÄÄÆÄÀÏ·¯ ³ª´Â ÁÖ·Î ÄÄÆÄÀÏ·¯ ¿¬±¸ÀÚ·Î ¾Ë·ÁÁ® ÀÖ´Ù. ±×·¡¼­ ³ª´Â ¸®´ª½º ½Ã½ºÅ۵鿡 ´ëÇÑ È¿À²ÀûÀÎ º´·Ä Äڵ带 ÀÚµ¿À¸·Î »ý¼ºÇÏ´Â À§´ëÇÑ ÄÄÆÄÀÏ·¯µéÀÌ ¸¹ÀÌ ÀÖ´Ù°í ¸»ÇÒ ¼ö ÀÖ¾úÀ¸¸é ÇÑ´Ù. ºÒÇàÇÏ°Ôµµ ´Ù¾çÇÑ ¸í½ÃÀû Åë½Å°ú ´Ù¸¥ º´·Ä ¿¬»êµéÀ» »ç¿ëÇÑ ¿©·¯ºÐÀÇ º´·Ä ÇÁ·Î±×·¥À» GCC·Î ÄÄÆÄÀ쵃 C ÄÚµå·Î Ç¥ÇöÇÔÀ¸·Î½á ¼º´ÉÀ» ³ôÀÏ ¼ö ÀÖ´Ù´Â °ÍÀº ¾î·Æ´Ù´Â °ÍÀÌ Áø½ÇÀÌ´Ù. ´ÙÀ½ ¾ð¾î/ÄÄÆÄÀÏ·¯ ÇÁ·ÎÁ§Æ®µéÀÌ °í-¼öÁØ ¾ð¾îµé·ÎºÎÅÍ È¿À²ÀûÀÎ Äڵ带 ¸¸µå´Â ³ë·ÂÀ» ÇÏ°í ÀÖ´Ù. ÀϹÝÀûÀ¸·Î ÀÌµé °¢°¢Àº ±×°ÍÀÌ ÁöÇâÇÏ´Â ÇÁ·Î±×·¡¹Ö ÀÛ¾÷µéÀÇ Á¾·ù¿¡ ´ëÇؼ­´Â È¿À²ÀûÀÌÁö¸¸ ¾î¶² °Íµµ °­·ÂÇÑ ¹ü¿ë ¾ð¾îÀÌÁö ¾Ê°í, GCC·Î ÄÄÆÄÀÏÇÒ C ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °ÍÀ» ¿µ¿øÈ÷ ¸ØÃß°Ô ÇÒ ¸¸ÇÑ °ÍÀÌ ¾ø´Ù. (±×·¡µµ) ÀÌ°ÍÀº ÁÁ´Ù. ÀÌ·± ¾ð¾îµé°ú ÄÄÆÄÀÏ·¯µéÀ» ±×µéÀÌ ÀǵµµÈ ¹Ù´ë·Î »ç¿ëÇÏ°í ¿©·¯ºÐÀº ´õ ªÀº °³¹ß ½Ã°£, ½¬¿î µð¹ö±ë°ú À¯Áö º¸¼ö µîÀÇ º¸»óÀ» ¹ÞÀ» °ÍÀÌ´Ù. ¿©±â¿¡ ¸®½ºÆ®µÈ(¾ËÆĺª ¼ø¼­·Î) °Íµé ¿Ü¿¡ ¸¹Àº ¾ð¾îµé°ú ÄÄÆÄÀÏ·¯µéÀÌ ÀÖ´Ù. ÀÚÀ¯·Ó°Ô »ç¿ë°¡´ÉÇÑ ÄÄÆÄÀÏ·¯µé(À̵éÁß ´ëºÎºÐÀº ¸®´ª½º º´·Ä 󸮿¡ ´ëÇؼ­ ¾Æ¹«°Íµµ ÇÏÁö ¸øÇÑ´Ù)Àº ¿¡ ÀÖ´Ù. 6.1.1. Fortran 66/77/PCF/90/HPF/95 Àû¾îµµ °úÇÐ ÄÄÇ»Æà »çȸ¿¡¼­´Â ¾ðÁ¦³ª Æ÷Æ®¶õ(Fortran)ÀÌ ÀÖ´Ù. ¹°·Ð ÀÌÁ¦ Æ÷Æ®¶õÀº 1966³â ANSI Ç¥ÁØ¿¡¼­ ±×·¨´ø °Í°ú ¶È°°Àº °ÍÀ» ÀǹÌÇÏÁö ¾Ê´Â´Ù. ±âº»ÀûÀ¸·Î Æ÷Æ®¶õ 66Àº ¾ÆÁÖ ´Ü¼øÇÑ °ÍÀÌ´Ù. Æ÷Æ®¶õ 77Àº ¸¹Àº °ÍµéÀ» Ãß°¡Çß°í À̵é Áß °¡Àå ÁÖ¸ñÇÒ ¸¸ÇÑ °ÍÀº ¹®ÀÚ µ¥ÀÌÅÍ¿¡ ´ëÇÑ °³¼±µÈ Áö¿ø°ú DO ·çÇÁ ¹®¹ýÀÇ º¯°æÀÌ´Ù. PCF (Parallel Computing Forum) Æ÷Æ®¶õÀº 77¿¡´Ù ´Ù¾çÇÑ º´·Ä ó¸® Áö¿øÀ» ´õÇÏ·Á°í ½ÃµµÇÏ¿´´Ù. Æ÷Æ®¶õ 90Àº ¿ÏÀüÇÑ-±â´ÉÀÇ Çö´ë ¾ð¾îÀÌ´Ù. ÀÌ°ÍÀº ±âº»ÀûÀ¸·Î C++-ºñ½ÁÇÑ °´Ã¼-ÁöÇâ ÇÁ·Î±×·¡¹Ö ±â´Éµé°ú º´·Ä ¹è¿­ ¹®¹ýÀ» 77 ¾ð¾î¿¡ Ãß°¡ÇÑ °ÍÀÌ´Ù. µÎ ¹öÀüµé(HPF-1°ú HPF-2)¸¦ °¡Áö´Â HPF (High-Performance Fortran, )´Â ±âº»ÀûÀ¸·Î Áøº¸µÈ, Ç¥ÁØÈ­µÈ, ¿ì¸®µéÀÌ º¸Åë CM Æ÷Æ®¶õ, MasPar Æ÷Æ®¶õ, ¶Ç´Â Æ÷Æ®¶õ D·Î ¾Ë°í ÀÖ´Â °ÍÀÇ ¹öÀüÀÌ´Ù; ÀÌ°ÍÀº ´Ù¾çÇÑ º´·Ä ó¸® °³¼±Á¡µéÀ» ³Ö¾î¼­ Æ÷Æ®¶õ 90À» È®ÀåÇÑ °ÍÀÌ´Ù. ÁÖ·Î µ¥ÀÌÅÍ ·¹À̾ƿôÀ» ÁöÁ¤ÇÏ´Â µ¥ ÃÐÁ¡À» µÐ °ÍÀÌ´Ù. ¸¶Áö¸·À¸·Î Æ÷Æ®¶õ 95´Â 90À» »ó´ëÀûÀ¸·Î Àû°Ô ÁõÁø½ÃÅ°°í °³¼±ÇÑ °ÍÀÌ´Ù. C·Î ÀÛ¾÷ÇÑ °ÍÀº ÀϹÝÀûÀ¸·Î f2c, g77 (¸®´ª½º-Á¾¼ÓÀûÀÎ ÈǸ¢ÇÑ °³°üÀº ¿¡ ÀÖ´Ù), ¶Ç´Â »ó¾÷¿ë ¹öÀü Æ÷Æ®¶õ 90/95°úµµ Àß ÀÛµ¿ÇÑ´Ù. ÀÌ°ÍÀº ÀÌµé ¸ðµç ÄÄÆÄÀÏ·¯µéÀÌ °á°úÀûÀ¸·Î GCCÀÇ ¹é-¿£µå¿¡¼­ »ç¿ëµÈ °Í°ú ÄÚµå-»ý¼º¿¡¼­ µ¿ÀÏÇϱ⠶§¹®ÀÌ´Ù. SMP¿¡ ´ëÇÑ Äڵ带 »ý¼ºÇÒ ¼ö ÀÖ´Â »ó¾÷¿ë Æ÷Æ®¶õ º´·Ä±â(parallelizer)µéÀº °ú ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ÀÌ·± ÄÄÆÄÀÏ·¯µéÀÌ SMP ¸®´ª½º¿¡¼­ ÀÛµ¿ÇÒ·±Áö ¾ÈÇÒ·±Áö´Â ¸ð¸£Áö¸¸ Ç¥ÁØ POSIX ½º·¹µåµé(Áï, LinuxThreads)°¡ SMP ¸®´ª½ºÇÏ¿¡¼­ ÀÛµ¿ÇÑ´Ù¸é ±×°ÍÀº °¡´ÉÇÒ °ÍÀÌ´Ù. Æ÷Æ®·£µå ±×·ì(Portland Group)Àº, , SMP ¸®´ª½º¿¡ ´ëÇÑ Äڵ带 »ý¼ºÇÏ´Â »ó¾÷¿ë º´·ÄÈ­ HPF Æ÷Æ®¶õ(±×¸®°í C, C++)¸¦ °¡Áö°í ÀÖ´Ù; ±×µéÀº ¶ÇÇÑ MPI³ª PVMÀ» »ç¿ëÇÑ Å¬·¯½ºÅ͵éÀ» Ÿ°ÙÀ¸·Î ÇÑ ¹öÀüµµ °®°í ÀÖ´Ù. < http://www.apri.com/>ÀÇ FORGE/spf/xHPF Á¦Æûµéµµ SMPµéÀ̳ª Ŭ·¯½ºÅ͵鿡 ´ëÇؼ­ À¯¿ëÇÒ °ÍÀÌ´Ù. º´·Ä ¸®´ª½º ½Ã½ºÅÛµé°ú ÀÛ¾÷ÀÌ °¡´ÉÇϵµ·Ï ¸¸µé¾îÁú ¼ö ÀÖ´Â, ÀÚÀ¯·Ó°Ô »ç¿ë°¡´ÉÇÑ º´·ÄÈ­ Æ÷Æ®¶õµéÀº ´ÙÀ½°ú °°Àº °ÍµéÀ» Æ÷ÇÔÇÑ´Ù: o ADAPTOR (ÀÚµ¿ µ¥ÀÌÅÍ º´·ÄÈ­ º¯È¯±â(Automatic DAta Parallelism TranslaTOR), ), ´Â HPF¸¦ MPI ¶Ç´Â PVM È£Ãâµé·Î ÀÌ·ç¾îÁø Æ÷Æ®¶õ 77/90 ÄÚµå·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ¸®´ª½º´Â ¾ð±ÞÇÏÁö ¾Ê´Â´Ù. o Ä«³×±â ¸á·ÐÀÇ Fx ´Â ¸î°¡Áö ¿öÅ©½ºÅ×ÀÌ¼Ç Å¬·¯½ºÅ͵éÀ» ¸ñÇ¥·Î »ï´Â´Ù. ±×·¯³ª ¸®´ª½º´Â? o HPFC (ÇÁ·ÎÅäŸÀÔ HPF ÄÄÆÄÀÏ·¯, ) PVM È£Ãâµé·Î ÀÌ·ç¾îÁø Æ÷Æ®¶õ 77À» »ý¼ºÇÑ´Ù. ÀÌ°ÍÀº ¸®´ª½º Ŭ·¯½ºÅÍ¿¡¼­ »ç¿ë°¡´ÉÀΰ¡? o PARADIGM (ºÐ»ê-¸Þ¸ð¸® ¹ü¿ë ¸ÖƼÄÄÇ»ÅÍ¿¡ ´ëÇÑ º´·ÄÈ­ ÄÄÆÄÀÏ·¯(PARAllelizing compiler for DIstributed-memory General- purpose Multicomputers), ) ´Â ¸®´ª½º¿¡¼­ »ç¿ëµÉ ¼ö Àִ°¡? o Polaris ÄÄÆÄÀÏ·¯, , ´Â °øÀ¯ ¸Þ¸ð¸® ¸ÖƼÇÁ·Î¼¼½ºµé¿¡ ´ëÇÑ Æ÷Æ®¶õ Äڵ带 »ý¼ºÇÏ°í ¾ó¸¶ ¾ÈÀ־ PAPERS ¸®´ª½º Ŭ·¯½ºÅ͸¦ ´Ù½Ã ¸ñÇ¥·Î »ïÀ» °ÍÀÌ´Ù. o PREPARE, , ´Â MPI Ŭ·¯½ºÅ͵éÀ» ¸ñÇ¥·Î »ï´Â´Ù... IA32 ÇÁ·Î¼¼¼­µé¿¡¼­ ½ÇÇàµÇ´Â Äڵ带 »ý¼ºÇÒ ¼ö ÀÖ´ÂÁö ¾ø´ÂÁö´Â ºÐ¸íÇÏÁö ¾Ê´Ù. o ADAPT¿Í ADLIB¸¦ Á¶ÇÕÇؼ­, shpf(°í¼º´É Æ÷Æ®¶õ ÄÄÆÄÀÏ ½Ã½ºÅÛ ºÎºÐÁýÇÕ(Subset High Performance Fortran compilation system), )´Â MPI È£ÃâµéÀ» °¡Áö´Â Æ÷Æ®¶õ 90À» »ý¼ºÇÏ´Â ÆÛºí¸¯ µµ¸ÞÀο¡ ÀÖ´Â °ÍÀÌ´Ù... ±×·¡¼­ ¿©·¯ºÐÀÌ ¸®´ª½º¿¡¼­ Æ÷Æ®¶õ 90 ÄÄÆÄÀÏ·¯¸¦ °¡Áö°í ÀÖ´Ù¸é... o SUIF (½ºÅÄÆ÷µå ´ëÇб³ Áß°£ Çü½Ä(Stanford University Intermediate Form), ÂüÁ¶) ´Â C¿Í Æ÷Æ®¶õ ¸ðµÎ¿¡ ´ëÇÑ º´·ÄÈ­ ÄÄÆÄÀÏ·¯¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ°ÍÀº Àü¹Ì ÄÄÆÄÀÏ·¯ ÀÎÇÁ¶ó ÇÁ·ÎÁ§Æ®(National Compiler Infrastructure Project)¿¡ ´ëÇؼ­µµ °ü½ÉÀ» °¡Áö°í ÀÖ´Ù. ±×·¡¼­ º´·Ä ¸®´ª½º ½Ã½ºÅÛµéÀ» ¸ñÇ¥·Î ÇÏ´Â »ç¶÷ÀÌ Àִ°¡? Æ÷Æ®¶õÀÇ ´Ù¾çÇÑ ¹æ¾ðµé¿¡ ´ëÇÑ ÀáÀçÀûÀ¸·Î À¯¿ëÇÑ ¸¹Àº ÄÄÆÄÀÏ·¯µéÀ» »©¸Ô¾ú´Ù°í È®½ÅÇÏÁö¸¸ ÃßÀûÇϱ⿡ ¾î·Á¿î Á¡ÀÌ ¸¹´Ù. ³ªÁß¿¡ ³ª´Â ¸®´ª½º¿¡¼­ ÀÛµ¿ÇÑ´Ù°í ¾Ë·ÁÁø ±×·± ÄÄÆÄÀÏ·¯µé¸¸ ¸ð¾Æ º¸°íÀÚ ÇÑ´Ù. pplinux@ecn.purdue.edu·Î ºñÆòÀ̳ª ±³Á¤À» À̸ÞÀÏ·Î º¸³»Áֱ⠹ٶõ´Ù. 6.1.2. GLU (Granular Lucid) GLU (Granular Lucid) ´Â Áý¾àÀûÀÌ°í(intensional) (Lucid) ±ä±ÞÇÑ ¸ðµ¨µéÀ» Á¶ÇÕÇÑ ÇÏÀ̺긮µå ÇÁ·Î±×·¡¹Ö ¸ðµ¨¿¡ ±â¹ÝÇÑ °í-¼öÁØ ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀÌ´Ù. ÀÌ°ÍÀº PVM°ú TCP ¼ÒÄϵéÀ» Áö¿øÇÑ´Ù. ÀÌ°ÍÀº ¸®´ª½º¿¡¼­ ½ÇÇàµÇ´Â°¡? Á» ´õ ¸¹Àº Á¤º¸°¡ ¿¡ ÀÖ´Ù. 6.1.3. Jade¿Í SAM Jade ´Â C¸¦ È®ÀåÇؼ­ ¼øÂ÷ÀûÀÌ°í ±ä±ÞÇÑ(imperative) ÇÁ·Î±×·¥µé ¾È¿¡¼­ ¼º±ä Çù·ÂÀ» °³¹ßÇϵµ·Ï ÇÑ º´·Ä ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. ÀÌ°ÍÀº ºÐ»ê °øÀ¯ ¸Þ¸ð¸® ¸ðµ¨À» °¡Á¤ÇÑ´Ù. ÀÌ°ÍÀº PVMÀ» »ç¿ëÇÏ´Â ¿öÅ©½ºÅ×ÀÌ¼Ç Å¬·¯½ºÅ͵鿡 ´ëÇؼ­ SAM¿¡ ÀÇÇØ ±¸ÇöµÈ´Ù. Á» ´õ ¸¹Àº Á¤º¸´Â ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. 6.1.4. Mentat°ú Legion Mentat´Â ¿öÅ©½ºÅ×ÀÌ¼Ç Å¬·¯½ºÅ͵鿡¼­ ÀÛµ¿ÇÏ°í ¸®´ª½º·Î Æ÷Æõȹ٠ÀÖ´Â °´Ã¼-ÁöÇâ º´·Ä ó¸® ½Ã½ºÅÛÀÌ´Ù. Mentat ÇÁ·Î±×·¡¹Ö ¾ð¾î(MPL)Àº C++¿¡ ±â¹ÝÇÏ°í ÀÖ´Â °´Ã¼-ÁöÇâ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. Mentat ½Ç½Ã°£ ½Ã½ºÅÛÀº ºñ-ºí·ÏÅ· RPCµé°ú ¾à°£ ´àÀº ¾î¶² °ÍµéÀ» »ç¿ëÇÑ´Ù. Á» ´õ ¸¹Àº Á¤º¸´Â ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. Legion ´Â Mentat ÀÇ »óÀ§¿¡ ¸¸µé¾îÁø °ÍÀÌ°í WANÀ¸·Î ¹­ÀÎ ±â°èµé¿¡ ´ëÇؼ­ ´ÜÀÏ °¡»ó ±â°è¸¦ Á¦°øÇÑ´Ù. 6.1.5. MPL (MasPar ÇÁ·Î±×·¡¹Ö ¾ð¾î) Mentat ÀÇ MPL°ú È¥µ¿µÇÁö ¸»ÀÚ. ÀÌ ¾ð¾î´Â ¿ø·¡ MasPar SIMD ½´ÆÛÄÄÇ»Å͸¦ À§ÇÑ ¿ø½Ã º´·Ä C ¹æ¾ðÀ¸·Î½á °³¹ßµÇ¾ú´Ù. ±Û½ê, MasPar´Â ½ÇÁ¦ ´õÀÌ»ó Àå»ç¸¦ ÇÏÁö ¾ÊÁö¸¸(±×µéÀº ÀÌÁ¦ NeoVista Solutions, , µ¥ÀÌÅÍ ¸¶ÀÌ´× È¸»çÀÌ´Ù), ±×µéÀÇ MPL ÄÄÆÄÀÏ·¯´Â GCC¸¦ »ç¿ëÇؼ­ °³¹ßµÇ¾ú¾ú´Ù. ±×·¡¼­ ÀÌ°ÍÀº ¾ÆÁ÷µµ ÀÚÀ¯·Ó°Ô »ç¿ë°¡´ÉÇÏ´Ù. HuntsvilleÀÇ ¾Ë¶ó¹Ù¸¶ ´ëÇб³¿Í ÆÛµà ´ëÇб³ À̵é°ú Á¶ÀÎÆ®Çؼ­ MasPar ÀÇ MPLÀº AFAP È£ÃâµéÀ» °¡Áø C Äڵ带 »ý¼ºÇÏ´Â °ÍÀ¸·Î ¸ñÇ¥°¡ ¹Ù²î¾ú´Ù(¼½¼Ç 3.6À» ÂüÁ¶), ±×·¡¼­ ¸®´ª½º SMP ¹× Ŭ·¯½ºÅ͵é À§Çؼ­ ÀÛµ¿ÇÑ´Ù. ±×·¯³ª ±× ÄÄÆÄÀÏ·¯´Â ´Ù¼Ò ¹ö±×°¡ ¸¹´Ù. ÂüÁ¶. 6.1.6. PAMS (º´·Ä ¾îÇø®ÄÉÀÌ¼Ç °ü¸® ½Ã½ºÅÛ(Parallel Application Man­ agement System)) Myrias ´Â PAMS (º´·Ä ¾îÇø®ÄÉÀÌ¼Ç °ü¸® ½Ã½ºÅÛ) À̶ó°í ºÒ¸®´Â ¼ÒÇÁÆ®¿þ¾î Á¦Ç°À» ÆĴ ȸ»çÀÌ´Ù. PAMS´Â °¡»ó °øÀ¯ ¸Þ¸ð¸® º´·Ä 󸮸¦ À§ÇÑ ¾ÆÁÖ ´Ü¼øÇÑ Áö½Ã¾îµéÀ» Á¦°øÇÑ´Ù. ¸®´ª½º ±â°èµéÀÇ ³×Æ®¿÷Àº ¾ÆÁ÷ Áö¿øµÇÁö ¾Ê´Â´Ù. Á» ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ À§Çؼ­´Â ¸¦ ÂüÁ¶ÇÏÀÚ. 6.1.7. Parallaxis-III Parallaxis-III ´Â µ¥ÀÌÅÍ º´·ÄÈ­ (SIMD ¸ðµ¨)¿¡ ´ëÇÑ "°¡»ó ÇÁ·Î¼¼¼­¿Í Ä¿³Ø¼Ç(virtual processors and connections)"À¸·Î Modula-2¸¦ È®ÀåÇÑ ±¸Á¶Àû ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. Parallaxis ¼ÒÇÁÆ®¿þ¾î´Â ¼øÂ÷ ¹× º´·Ä ÄÄÇ»ÅÍ ½Ã½ºÅÛµéÀ» À§ÇÑ ÄÄÆÄÀÏ·¯µé°ú, µð¹ö°Å(gdb¿Í xgdb µð¹ö°Å¿¡ ´ëÇÑ È®ÀåÆÇ), ±×¸®°í ¼­·Î ´Ù¸¥ ¿µ¿ªÀÇ, Ưº°È÷ À̹ÌÁö ó¸® ¿µ¿ªÀÇ, ¸¹Àº ¾çÀÇ »ùÇà ¾Ë°í¸®Áòµé·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ÀÌ°ÍÀº ¼øÂ÷ ¸®´ª½º ½Ã½ºÅÛµé À§Çì¼­ ½ÇÇàµÈ´Ù... ±¸ ¹öÀüÀº ´Ù¾çÇÑ º´·Ä Ÿ°ÙµéÀ» Áö¿øÇß¾ú´Ù. ±×¸®°í »õ·Î¿î ¹öÀüµµ (¿¹, PVM Ŭ·¯½ºÅ͸¦ Ÿ°ÙÀ¸·Î »ïÀ½) ¶ÇÇÑ ±×·²°ÍÀÌ´Ù. Á» ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. 6.1.8. pC++/Sage++ pC++/Sage++ ´Â ¾î¶² ±âº» "¿ä¼Ò(element)" Ŭ·¡½º·ÎºÎÅÍ "°´Ã¼µéÀÇ ÁýÇÕü(collections of objects)"¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅÍ-º´·Ä ½ºÅ¸ÀÏ ÀÛ¾÷µéÀ» Çã¿ëÇÏ´Â C++¿¡ ´ëÇÑ ¾ð¾î È®ÀåÀÌ´Ù. ÀÌ°ÍÀº PVM¿¡¼­ ½ÇÇàµÉ ¼ö ÀÕ´Â C++ Äڵ带 »ý¼ºÇÏ´Â ¼±Çà ÇÁ·Î¼¼¼­ÀÌ´Ù. ÀÌ°ÍÀº ¸®´ª½º¿¡¼­ ÀÛµ¿Çϴ°¡? Á» ´õ ¸¹Àº Á¤º¸´Â ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. 6.1.9. SR (¸®¼Ò½º µ¿±â(Synchronizing Resources)) SR (¸®¼Ò½º µ¿±â(Synchronizing Resources))´Â ¸®¼Ò½ºµéÀÌ ±×µéÀÌ °øÀ¯ÇÏ´Â ÇÁ·Î¼¼½ºµé°ú º¯¼öµéÀ» ĸ½¶È­ÇÏ´Â Çù·Â(concurrent) ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù; ¿¬»ê(operation)µéÀÌ ÇÁ·Î¼¼½º »óÈ£ÀÛ¿ë¿¡ ´ëÇÑ ÁÖ¿ä ¸ÞÄ«´ÏÁòÀ» Á¦°øÇÑ´Ù. SR Àº È£Ãâ°ú ¼­ºñ½º ÀÛ¾÷µé¿¡ ´ëÇÑ ¸ÞÄ«´ÏÁòµéÀÇ »õ·Î¿î Á¤ÇÕÀ» Á¦°øÇÑ´Ù. °á°úÀûÀ¸·Î ¸ðµç ·ÎÄà ±×¸®°í ¸®¸ðÆ® ÇÁ·Î½ÃÀú È£Ãâ, ¶ûµ¥ºä, ¸Þ½ÃÁö Àü´Þ, µ¿Àû ÇÁ·Î¼¼½º »ý¼º, ¸ÖƼij½ºÆ®, ±×¸®°í ¼¼¸¶Æ÷¾îµéÀÌ Áö¿øµÈ´Ù. SR Àº ¶ÇÇÑ °øÀ¯µÈ(shared) Àü¿ª º¯¼öµé°ú ¿¬»ê(operation)µéÀ» Áö¿øÇÑ´Ù. ÀÌ°ÍÀº ¸®´ª½º·Î Æ÷ÆõǾúÁö¸¸ ±×°ÍÀ¸·Î ½ÇÇàµÉ ¼ö ÀÖ´Â º´·ÄÈ­°¡ ¹«¾ùÀÎÁö´Â ºÐ¸íÇÏÁö ¾Ê´Ù. Á» ´õ ¸¹Àº Á¤º¸´Â ¿¡¼­ °¡´ÉÇÏ´Ù. 6.1.10. ZPL°ú IronMan ZPL Àº °øÇаú °úÇÐ ¾îÇø®ÄÉÀ̼ǵéÀ» Áö¿øÇϵµ·Ï °í¾ÈµÈ ¹è¿­-±â¹Ý ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. ÀÌ°ÍÀº IronMan À̶ó°í ºÒ¸®´Â ´Ü¼øÇÑ ¸Þ½ÃÁö-Àü´Þ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ È£ÃâÀ» »ý¼ºÇϸç ÀÌ·± ÀÎÅÍÆäÀ̽º¸¦ ±¸¼ºÇÏ´Â ¸î°¡Áö ÇÔ¼öµéÀÌ °ÅÀÇ ¸ðµç ¸Þ½ÃÁö-Àü´Þ ½Ã½ºÅÛÀ» »ç¿ëÇؼ­ ½±°Ô ±¸ÇöµÉ ¼ö ÀÖ´Ù. ±×·¯³ª ¿öÅ©½ºÅ×ÀÌ¼Ç Å¬·¯½ºÅÍµé »óÀÇ PVM °ú MPI, ±×¸®°í ¸®´ª½º°¡ Áö¿øµÇ´Â °ÍÀÌ ÁÖ¿ä Ÿ°ÙÀÌ´Ù. Á» ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. 6.2. ¼º´É ¹®Á¦(Performance Issues) ƯÁ¤ÇÑ ¸¶´õº¸µå, ³×Æ®¿÷ Ä«µåµé µîÀ» ¾î¶² °ÍÀÌ ÃÖ°íÀΰ¡¸¦ ¾Ë¾Æº¸·Á°í º¥Ä¡¸¶Å·ÇÏ´Â µ¥, ¸¹Àº ½Ã°£À» ¼ÒºñÇÏ´Â »ç¶÷µéÀÌ ¸¹ÀÌ ÀÖ´Ù. ÀÌ·± °ÍÀÇ ¹®Á¦´Â ¿©·¯ºÐÀÌ ¾î¶² °ÍÀ» º¥Ä¡¸¶Å·ÇÒ ¼ö ÀÖÀ» ¶§¿¡´Â ÀÌ¹Ì ±×°ÍÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â °Í Áß¿¡ ÃÖ°í°¡ ´õÀÌ»ó ¾Æ´Ï¶ó´Â °ÍÀÌ´Ù; ÀÌ°ÍÀº ½ÉÁö¾î ½ÃÀå¿¡¼­ »ç¶óÁö°í ¿ÏÀü ´Ù¸¥ ¼Ó¼ºµéÀ» °¡Áø °³¼±µÈ ¸ðµ¨·Î ±³Ã¼µÇ¾úÀ»¼ö ÀÖ´Ù. PC Çϵå¿þ¾î¸¦ »ç´Â °ÍÀº ¿À·£Áö Á꽺¸¦ »ç´Â °Í°ú °°´Ù. º¸Åë ÀÌ°ÍÀº ¶óº§¿¡ ºÙÀº ȸ»ç À̸§ÀÌ ¹«¾ùÀÎÁö´Â »ó°üÀÌ ¾ø°í ¾ÆÁÖ ÁÁÀº Àç·Î·Î ¸¸µé¾îÁø´Ù. ±¸¼º ¼ººÐµé(¶Ç´Â ¿À·»Áö Á꽺 ³óÃà¾×)ÀÌ ¹«¾ùÀ¸·Î ¸¸µé¾îÁ³´ÂÁö ½Å°æ¾²°Å³ª ¾Æ´Â »ç¶÷Àº °ÅÀÇ ¾ø´Ù. Áï, ¿©·¯ºÐÀÌ ½Å°æ¾µ Çϵå¿þ¾î Â÷À̵éÀº º°·Î ¾ÈµÈ´Ù. ¿©·¯ºÐÀÌ ¸®´ª½º·Î ¾µ Çϵå¿þ¾î¿¡ ´ëÇؼ­ ±âÇØÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¹«¾ùÀΰ¡¸¦ È®½ÇÈ÷ ¾Ë°í ºü¸¥ ¹è´Þ, ÁÁÀº °¡°Ý, ±×¸®°í ¹ÝÇ°¿¡ ´ëÇÑ ÀûÀýÇÑ Á¤Ã¥¿¡ ´ëÇؼ­¸¸ ½Å°æÀ» ÁýÁßÇ϶ó´Â °ÍÀÌ ³» Á¶¾ðÀÌ´Ù. ¼­·Î ´Ù¸¥ PC ÇÁ·Î¼¼¼­µé¿¡ ´ëÇÑ ÈǸ¢ÇÑ °³°üÀº ¿¡ ÀÖ´Ù; »ç½Ç ¿ÏÀüÇÑ WWW »çÀÌÆ® ¿¡´Â PC Çϵå¿þ¾îÀÇ ÁÁÀº ±â¼úÀûÀÎ °³°üµéÀÌ ¸ð¿© ÀÖ´Ù. ƯÁ¤ Çϵå¿þ¾î ¼³Á¤µéÀÇ ¼º´É¿¡ ´ëÇؼ­ Á¶±Ý ¾Æ´Â °Íµµ À¯¿ëÇÏ´Ù. ±×¸®°í ¸®´ª½º º¥Ä¡¸¶Å· HOWTO(Linux Benchmarking HOWTO) °¡ ½ÃÀÛÇϱ⿡ ÁÁÀº °÷ÀÌ´Ù. ÀÎÅÚ IA32 ÇÁ·Î¼¼¼­µéÀº ½ÇÇàÁßÀÎ ½Ã½ºÅÛÀÇ ¼º´ÉÀ» Á¤±³ÇÑ ¼¼ºÎ»çÇ×±îÁö ÃøÁ¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â ¸¹Àº Ư¼öÇÑ ·¹Áö½ºÅ͵éÀ» °¡Áø´Ù. ÀÎÅÚ VTune, , ´Â ¾ÆÁÖ ¿ÏÀüÇÑ ÄÚµå-Æ©Æà ½Ã½ºÅÛ¿¡¼­ ¼º´É ·¹Áö½ºÅ͵éÀ» ³Ð°Ô »ç¿ëÇÑ´Ù... ÀÌ°ÍÀº ºÒÇàÇÏ°Ôµµ ¸®´ª½º¿¡¼­ ½ÇÇàµÇÁö ¾Ê´Â´Ù. ÆæƼ¾ö ¼º´É ·¹Áö½ºÅ͵éÀ» ¾ï¼¼½ºÇϱâ À§ÇÑ ·Îµù °¡´ÉÇÑ ¸ðµâ ÀåÄ¡ µå¶óÀ̹ö, ±×¸®°í ¶óÀ̺귯¸® ·çƾµéÀº ¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ÀÌ·± ¼º´É ·¹Áö½ºÅ͵éÀº ´Ù¸¥ IA32 ÇÁ·Î¼¼¼­µé°ú ´Ù¸£´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ; ÀÌ·± ÄÚµå´Â 486, Pentium Pro, Pentium II, K6 µî°ú´Â ÀÛµ¿ÇÏÁö ¾Ê°í Pentium¿¡ ´ëÇؼ­¸¸ ÀÛµ¿ÇÑ´Ù. ¼º´É¿¡ ´ëÇÑ ´Ù¸¥ ¾ð±ÞÀº, Ä¿´Ù¶õ Ŭ·¯½ºÅ͵éÀ» ¸¸µé°í ±×°ÍÀ» Á¶±×¸¸ °ø°£¿¡ ³Ö°íÀÚ ÇÏ´Â »ç¶÷µé¿¡ Ưº°È÷, ÀûÀýÇÏ´Ù. Àû¾îµµ ¿äÁòÀÇ ¾î¶² ÇÁ·Î¼¼¼­µéÀº ¿Âµµ ¼¾¼­¸¦ ³»ÀåÇÏ°í ÀÖ°í ¿î¿µ ¿Âµµ°¡ ³Ê¹« ³ôÀ» ¶§ ³»ºÎ Ŭ·°À» ´ÊÃß´Â µ¥ »ç¿ëµÇ´Â ȸ·Îµé(¿­ »ý¼ºÀ» ÁÙÀÌ°í ½Å·Úµµ¸¦ ³ôÀÌ´Â ½Ãµµ)À» °¡Áö°í ÀÖ´Ù. ³ª´Â ¸ðµç »ç¶÷µéÀÌ ÆçƼ¿¡ (-- ¿ªÀÚÁÖ: ÆçƼ¿¡ È¿°ú - ÀÌÁ¾(ì¶ðú)ÀÇ ±Ý¼Ó Á¢Ã˸鿡 ¾àÇÑ Àü·ù°¡ Èê·¶À» ¶§ ¿­ÀÌ ¹ß»ý ¶Ç´Â Èí¼öµÇ´Â Çö»ó--) ÀåÄ¡(¿­ ÆßÇÁ)¸¦ »ç¼­ °¢ CPU¸¦ ½ÄÈú ÇÊ¿ä´Â ¾ø´Ù°í Á¦¾ÈÇÏÁö¸¸ ³ôÀº ¿î¿µ ¿­ÀÌ ¼ººÐµéÀÇ »ç¿ë½Ã°£À» ÁÙÀϻӸ¸ ¾Æ´Ï¶ó - ½Ã½ºÅÛ ¼º´ÉÀ» Á÷Á¢ ÁÙÀÏ ¼öµµ ÀÖ´Ù´Â °ÍÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. ¿©·¯ºÐÀÇ ÄÄÇ»Å͵éÀ» °ø±âÈ帧À» Â÷´ÜÇÏ´Â ¹°¸®Àû ¹èÄ¡¼Ó¿¡ ³õÁö ¸»°í Á¦ÇÑµÈ ¿µ¿ª¾È¿¡¼­ ¿­À» Àâ¾Æ¶ó. ±âŸ µîµî. ¸¶Áö¸·À¸·Î ¼º´ÉÀ̶õ ´Ü¼øÈ÷ ¼Óµµ»Ó¸¸ÀÌ ¾Æ´Ï°í ½Å·Úµµ¿Í °¡¿ë¼ºµµ Æ÷ÇԵȴÙ. ³ôÀº ½Å·Úµµ¶õ ¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ, ºñ·Ï ±¸¼º ¿ä¼ÒµéÀÌ ½ÇÆÐÇÏ´õ¶óµµ, °ÅÀÇ Àý´ë·Î Á×Áö(crash) ¾Ê´Â´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù... ÀÌ°ÍÀº ÀϹÝÀûÀ¸·Î ¿©ºÐÀÇ ÆÄ¿ö °ø±Þ±â¿Í ÇÖ-½º¿Ò ¸¶´õº¸µå¿Í °°Àº Ư¼ö ±â´ÉµéÀ» ¿ä±¸ÇÑ´Ù. ÀÌ°ÍÀº º¸Åë ½ÎÁö ¾Ê´Ù. ³ôÀº °¡¿ë¼ºÀ̶õ °ÅÀÇ ¸ðµç ½Ã°£¿¡ »ç¿ë °¡´ÉÇÏ´Ù´Â °³³äÀ» ¸»ÇÑ´Ù... ½Ã½ºÅÛÀº ±× ±¸¼º¿ä¼Ò°¡ ½ÇÆÐÇÒ ¶§ Á×À» ¼öµµ ÀÖÁö¸¸ ½Ã½ºÅÛÀº À绡¸® °íÃÄÁö°í ¸®ºÎÆõȴÙ. ¸¹Àº ±âº» À̽´µéÀ» ³íÀÇÇÑ High-Availability HOWTO°¡ ÀÖ´Ù. ±×·¯³ª Ŭ·¯½ºÅÍ¿¡ ´ëÇؼ­ Ưº°È÷, ³ôÀº °¡¿ë¼ºÀº ¸î°³ÀÇ ¿©ºÐÀ» °¡Áö´Â °ÍÀ¸·Î ½±°Ô ȹµæµÉ ¼ö ÀÖ´Ù. ³ª´Â Àû¾îµµ ÇÑ°³ÀÇ ¿©ºÐÀ» ±ÇÀåÇÏ´Â ¹ÙÀÌ°í Ä¿´Ù¶õ Ŭ·¯½ºÅÍ¿¡¼­ 16°³ ±â°è¸¶´Ù Çϳª¾¿ÀÇ ¿©ºÐÀ» Àû¾îµµ °¡Áö´Â °ÍÀ» ¼±È£ÇÑ´Ù. À߸øµÈ Çϵå¿þ¾î¸¦ ¹ö¸®°í ±×°ÍÀ» ¿©ºÐÀÇ °ÍÀ¸·Î ±³Ã¼ÇÏ´Â °ÍÀº À¯Áöº¸¼ö °è¾àº¸´Ùµµ ´õ ³ôÀº °¡¿ë¼º°ú ´õ ³·Àº ºñ¿ëÀ» ¾òÀ»¼ö ÀÖµµ·Ï ÇÑ´Ù. 6.3. °á·Ð - °Å±â¿¡ ÀÖ´Ù. ±×·¡ ¸®´ª½º¸¦ »ç¿ëÇؼ­ º´·Ä 󸮸¦ ÇÏ´Â »ç¶÷ÀÌ Àִ°¡? ±×·¸´Ù! ¸¹Àº »ç¶÷µéÀÌ ¸¹Àº º´·Ä-ó¸® ½´ÆÛÄÄÇ»ÅÍ È¸»çµéÀÌ Á״´ٴ °ÍÀÌ º´·Ä 󸮰¡ ½Ãµé½ÃµéÇØÁö±â ½ÃÀÛÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÏ´Â °ÍÀÌ ¾Æ´Ñ°¡ÇÏ°í »ý°¢Çß´ø °ÍÀº ¾ÆÁÖ ¿À·¡ ÀüÀÇ ÀÏÀÌ ¾Æ´Ï´Ù. ³ª´Â ±×´ç½Ã ±×·² °ÍÀ̶ó°í »ý°¢ÇÏÁö ¾Ê¾Ò°í(³»°¡ ½ÇÁ¦·Î ÀϾ °ÍÀ̶ó°í »ý°¢ÇÑ °Í¿¡ ´ëÇÑ °ÍÀ» Àç¹Ì°Å¸®·Î º¸·Á¸é ¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù), º´·Ä 󸮰¡ Áö±Ý ¶Ç´Ù½Ã ÀϾ°í ÀÖ´Â °ÍÀº ¸í¹éÇÑ »ç½ÇÀÌ´Ù. ½ÉÁö¾î ¾ó¸¶Àü¿¡ º´·Ä ½´ÆÛÄÄÇ»Å͸¦ ¸¸µå´Â °ÍÀ» ÁßÁöÇÑ IntelÀÌ MMX¿Í ¾ÕÀ¸·Î ³ª¿Ã IA64 EPIC (Explicitly Parallel Instruction Computer)°ú °°Àº °Íµé¿¡¼­ º´·Ä ó¸® Áö¿øÀ» ÇÑ´Ù°í ÀÚ¶ûÇÏ°í ÀÖ´Ù. ¿©·¯ºÐÀÌ ¼±È£ÇÏ´Â °Ë»ö ¿£Áø¿¡¼­ "Linux"¿Í "paralle'À» °Ë»öÇÑ´Ù¸é ¿©·¯ºÐÀº ¸î°³ÀÇ »çÀÌÆ®µéÀÌ ¸®´ª½º¸¦ »ç¿ëÇÑ º´·Ä 󸮿¡ Æ÷ÇԵȴٴ °ÍÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù. Ưº°È÷ Linux PC Ŭ·¯½ºÅ͵éÀº ¸ðµç °÷¿¡¼­ ¶°¿À¸£´Â °Íó·³ º¸ÀÏ °ÍÀÌ´Ù. PC Çϵå¿þ¾îÀÇ Àúºñ¿ë °í¼º´É°ú ÇÕÃļ­ ¸®´ª½ºÀÇ ÀûÀýÇÔ(appropriateness)´Â ¸®´ª½º¸¦ »ç¿ëÇÑ º´·Ä 󸮸¦ ÀÛ°í, ¿¹»êÀÌ ÀûÀº ±×·ìµé°ú Å©°í ¿¹»êÀÌ ¸¹°í ±¹°¡ÀûÀÎ ¿¬±¸¼Òµé ¸ðµÎÀÇ ÀαâÀÖ´Â ½´ÆÛÄÄÇ»Æà Á¢±ÙÀ¸·Î ¸¸µé¾ú´Ù. ÀÌ ¹®¼­ µµÃ³¿¡ ÀÖ´Â ´Ù¾çÇÑ ÇÁ·ÎÁ§Æ®µéÀÌ ºñ½ÁÇÑ º´·Ä ¸®´ª½º ¼³Á¤À» °¡Áö´Â "À¯»çÇÑ" ¿¬±¸ »çÀÌÆ®µé ¸®½ºÆ®¸¦ °ü¸®ÇÑ´Ù. ±×·¯³ª ¿¡, º´·Ä 󸮿¡ ¸®´ª½º ½Ã½ºÅÛµéÀ» »ç¿ëÇÏ´Â ´Ù¾çÇÑ »çÀÌÆ®µéÀÇ »çÁø, ¼³¸í, ±×¸®°í ¿¬¶ô Á¤º¸µéÀ» Á¦°øÇϱâ À§Çؼ­ °í¾ÈµÈ ¹®¼­µéÀÌ ÀÖ´Ù. o ¿©·¯ºÐÀº ¹Ýµå½Ã "¿µ¼ÓÀûÀÎ" º´·Ä ¸®´ª½º »çÀÌÆ®¸¦ °¡Á®¾ß ÇÑ´Ù: SMP, ±â°èµéÀÇ Å¬·¯½ºÅÍ, SWAR ½Ã½ºÅÛ, ¶Ç´Â ºÎ¼Ó ÇÁ·Î¼¼¼­¸¦ °¡Áö´Â PC µîµîÀº »ç¿ëÀڵ鿡°Ô ¸®´ª½º¿¡¼­ º´·Ä ÇÁ·Î±×·¥µéÀ» ¼öÇàÇÒ ¼ö ÀÖµµ·Ï ¼³Á¤µÈ´Ù. º´·Ä 󸮸¦ Á÷Á¢ Áö¿øÇÏ´Â ¸®´ª½º-±â¹Ý ¼ÒÇÁÆ®¿þ¾î ȯ°æ (¿¹, PVM, MPI, AFAPI)ÀÌ ±× ½Ã½ºÅÛ¿¡ ¹Ýµå½Ã ¼³Ä¡µÇ¾î¾ß ÇÑ´Ù. ±×·¯³ª, Çϵå¿þ¾î´Â ¸®´ª½ºÀÇ º´·Ä 󸮿¡ ¸ÅÀÏ ÇÊ¿ä°¡ ¾ø°í º´·Ä ÇÁ·Î±×·¥µéÀÌ ½ÇÇàÁßÀÌ ¾Æ´Ò ¶§ ¿ÏÀüÈ÷ ´Ù¸¥ ¸ñÀûµéÀ» À§Çؼ­ »ç¿ëµÉ ¼ö ÀÖ´Ù. o ¿©·¯ºÐÀÇ »çÀÌÆ®°¡ ¸®½ºÆ®µÇµµ·Ï ¿ä±¸ÇÏÀÚ. ¿©·¯ºÐÀÇ »çÀÌÆ® Á¤º¸¸¦ pplinux@ecn.purdue.edu¿¡°Ô º¸³»ÀÚ. ¿©·¯ºÐÀÇ »çÀÌÆ® Á¤º¸¿¡ ´ëÇؼ­ ´Ù¸¥ ¿£Æ®¸®µé¿¡¼­ »ç¿ëµÈ Æ÷¸äÀ» µû¸£±â ¹Ù¶õ´Ù. ±× »çÀÌÆ®¿¡ ´ëÇÑ Á¢ÃË °¡´ÉÇÑ »ç¶÷À¸·ÎºÎÅÍÀÇ ¸í½ÃµÈ ¿ä±¸°¡ ¾øÀ¸¸é ¾î¶² »çÀÌÆ®µµ ¸®½ºÆ®¿¡ Ãß°¡µÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ÇöÀç ¸®½ºÆ®¿¡´Â 14°³ÀÇ Å¬·¯½ºÅ͵éÀÌ ÀÖÁö¸¸ ¿ì¸®´Â Àû¾îµµ ¼ö½Ê°³ÀÇ Å¬·¯½ºÆ®µéÀÌ Àü¼¼°è¿¡ ÀÖ´Ù´Â °ÍÀ» ¾È´Ù. ¹°·Ð ¸®½ºÆ®°¡ ¾Ï½Ã³ª º¸Áõ, ±âŸ µîµîÀ» ÀǹÌÇÏÁö ¾Ê´Â´Ù; ¿ì¸®´Â ´ÜÁö ¸®´ª½º¸¦ »ç¿ëÇÑ º´·Ä 󸮸¦ Æ÷ÇÔÇÑ ÀνÄ, ¿¬±¸, ±×¸®°í Çù·ÂÀ» ÁõÁøÇϱ⸦ ¹Ù¶ö»ÓÀÌ´Ù.