Параллелді есептеу архитектурасы: MISD және систоликалық тізбектер
Multiple instruction, single data
Параллельді есептеу архитектурасы: MISD түрі, деректерге қатысты әртүрлі операциялар. Ұңғыма архитектурасы, қателерге төзімділік, қолдану аясы шектеулі.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Параллельді есептеу архитектурасы
Parallel computing architecture
Есептеуде, көп нұсқау, бір дерек (MISD) – бұл параллельді есептеу архитектурасының бір түрі, онда көптеген функционалдық блоктар бір дерек бойынша әртүрлі операцияларды орындайды. Құбырлы архитектуралар осы типке жатады, бірақ қатаң тұрғысынан алғанда, құбырдың әр кезеңінен өңделгеннен кейін деректер өзгереді. Қателерге төзімділік, яғни қателерді анықтау және жасыру үшін бірдей нұсқауларды қайталап орындау, тапсырма көшірмесі ретінде белгілі әдіс, осы типке жататындығын қарастыруға болады. Бұл архитектураның қолданылуы MIMD және SIMD архитектураларына қарағанда кем, себебі соңғы екеуі әдеттегі дерек параллельді техникалар үшін тиімдірек. Атап айтқанда, олар есептеу ресурстарын жақсырақ масштабтауға және пайдалануға мүмкіндік береді. Дегенмен, MISD-нің есептеу техникасындағы маңызды мысалы – «Space Shuttle» ғарыш кемесінің ұшуды басқару компьютерлері.
In computing, multiple instruction, single data (MISD) is a type of parallel computing architecture where many functional units perform different operations on the same data. Pipeline architectures belong to this type, though a purist might say that the data is different after processing by each stage in the pipeline. Fault tolerance executing the same instructions redundantly in order to detect and mask errors, in a manner known as task replication, may be considered to belong to this type. Applications for this architecture are much less common than MIMD and SIMD, as the latter two are often more appropriate for common data parallel techniques. Specifically, they allow better scaling and use of computational resources. However, one prominent example of MISD in computing are the Space Shuttle flight control computers.
Систолалық массивтер
Систоликалық массивтер (< толқын фронты процессорлары), алғаш рет Х.Т. Кунг пен Чарльз Э. Лейзерсон сипаттаған, MISD архитектурасының мысалы болып табылады. Типик систолалық массивте, параллель кіріс деректері қатты сымдалған процессор түйіндерінің желісі арқылы өтеді, олар кіріс деректерін біріктіріп, өңдеп, қосып немесе сұрыптап, туынды нәтижеге айналдырады. Систолалық массивтер көбінесе "көбейту және жинақтау" сияқты нақты операция үшін қатты сымдалған, массивтік параллель интеграциялау, конволюция, корреляция, матрица көбейту немесе деректерді сұрыптау міндеттерін орындауға арналған. Систолалық массив әдетте, белгілі бір қолданбаға арналған бастапқы есептеу түйіндерінің үлкен монолиттік желісінен тұрады, олар қатты немесе бағдарламалық түрде конфигурациялануы мүмкін. Түйіндер әдетте бекітілген және бірдей болады, ал байланыс бағдарламаланады. Ал, жалпы толқын фронты процессорлары, массивтің мөлшері мен дизайн параметрлеріне байланысты монолиттік немесе емес болатын, күрделі және жеке бағдарламаланатын түйіндерді қолданады. Систолалық массив арқылы деректердің толқын тәрізді таралуы адамның қан айналымы жүйесінің пульсіне ұқсас болғандықтан, "систолалық" атауы медициналық терминологиядан алынған. Систолалық массивтердің маңызды артықшылығы – барлық операнд деректері мен аралық нәтижелер процессор массиві ішінде (өтетін) болады. Әрбір операция кезінде стандартты тізбекті машиналардағыдай сыртқы шиналарға, негізгі жадқа немесе ішкі кэшке кірудің қажеті жоқ. Ахальдің заңымен анықталған параллель өнімділіктің тізбекті шектері де осылай қолданылмайды, себебі деректердің тәуелділіктері бағдарламаланатын түйіннің байланысы арқылы жасырын түрде басқарылады. Сондықтан, систолалық массивтер жасанды интеллект, кескіндерді өңдеу, үлгілерді тану, компьютерлік көру және жануарлар миы өте жақсы орындайтын басқа да міндеттерде өте тиімді. Толқын фронты процессорлары, әдетте, машиналық оқытуда да өте жақсы болуы мүмкін, аппараттық құралдарда өздігінен конфигурацияланатын нейрондық желілерді жүзеге асыру арқылы. Систолалық массивтер ресми түрде MISD ретінде жіктеліп келсе де, олардың жіктелуі кейбір қиындықтар тудырады. Кіріс әдетте тәуелсіз мәндердің векторы болғандықтан, систолалық массив SISD емес. Бұл кіріс мәндері біріктіріліп, нәтижеге қосылғандықтан және SIMD векторлық өңдеу блогындағыдай тәуелсіздігін сақтамайтындықтан, массив осылай жіктелмейді. Соған байланысты, массивті MIMD ретінде де жіктеуге болмайды, себебі MIMD кіші SISD және SIMD машиналардың жиынтығы ретінде қарастырылады. Соңында, деректер массиві арқылы түйінден түйінге өте келе өзгергендіктен, бірнеше түйін бір деректерде жұмыс істемейді, бұл MISD жіктемесін қате етеді. Систолалық массивтің MISD ретінде жарамсыз болуының тағы бір себебі SISD санатынан шығару себебімен бірдей: кіріс деректері әдетте вектор болып табылады, жалғыз дерек мәні емес, бірақ кез келген кіріс векторы бір дерек жиынтығы деп санауға болады. Жоғарыда айтылғандарға қарамастан, систолалық массивтер параллель есептеу және инженерлік сабақтардағы оқулықтарда MISD архитектурасының классикалық мысалы ретінде жиі ұсынылады. Егер массив сырттан қарағанда атомдық болса, оны SFMuDMeR = бір функция, бірнеше дерек, біріктірілген нәтижелер деп жіктеуге болады.
Systolic arrays (< wavefront processors), first described by H. T. Kung and Charles E. Leiserson are an example of MISD architecture. In a typical systolic array, parallel input data flows through a network of hard wired processor nodes, resembling the human brain which combine, process, merge or sort the input data into a derived result. Systolic arrays are often hard wired for a specific operation, such as "multiply and accumulate", to perform massively parallel integration, convolution, correlation, matrix multiplication or data sorting tasks. A systolic array typically consists of a large monolithic network of primitive computing nodes, which can be hardwired or software configured for a specific application. The nodes are usually fixed and identical, while the interconnect is programmable. More general wavefront processors, by contrast, employ sophisticated and individually programmable nodes which may or may not be monolithic, depending on the array size and design parameters. Because the wave like propagation of data through a systolic array resembles the pulse of the human circulatory system, the name systolic was coined from medical terminology. A significant benefit of systolic arrays is that all operand data and partial results are contained within (passing through) the processor array. There is no need to access external buses, main memory, or internal caches during each operation, as with standard sequential machines. The sequential limits on parallel performance dictated by Amdahl's law also do not apply in the same way because data dependencies are implicitly handled by the programmable node interconnect. Therefore, systolic arrays are extremely good at artificial intelligence, image processing, pattern recognition, computer vision, and other tasks that animal brains do exceptionally well. Wavefront processors, in general, can also be very good at machine learning by implementing self configuring neural nets in hardware. While systolic arrays are officially classified as MISD, their classification is somewhat problematic. Because the input is typically a vector of independent values, the systolic array is not SISD. Since these input values are merged and combined into the result(s) and do not maintain their independence as they would in a SIMD vector processing unit, the array cannot be classified as such. Consequently, the array cannot be classified as a MIMD either, since MIMD can be viewed as a mere collection of smaller SISD and SIMD machines. Finally, because the data swarm is transformed as it passes through the array from node to node, the multiple nodes are not operating on the same data, which makes the MISD classification a misnomer. The other reason why a systolic array should not qualify as a MISD is the same as the one which disqualifies it from the SISD category: The input data is typically a vector, not a single data value, although one could argue that any given input vector is a single dataset. The above notwithstanding, systolic arrays are often offered as a classic example of MISD architecture in textbooks on parallel computing and in the engineering class. If the array is viewed from the outside as atomic it should perhaps be classified as SFMuDMeR = single function, multiple data, merged result(s).