Кіріспе
Төмен деңгейдегі компьютерлік архитектураның түрі. Деректер ағыны архитектурасы – дәстүрлі фон Нейман архитектурасына немесе басқару ағыны архитектурасына тікелей қарсы келетін деректер ағынына негізделген компьютерлік архитектура. Деректер ағыны архитектурасының бағдарламалық тізімі болмайды: нұсқаулардың орындалу мүмкіндігі және орындалуы тек нұсқауларға берілген деректердің қолжетімділігіне байланысты болады, сондықтан нұсқауларды орындау ретін болжау қиын болуы мүмкін. Көлемдік саудаға сәтті қолданылған жалпы мақсаттағы компьютерлік жабдықтардың ешқайсысы деректер ағыны архитектурасын пайдаланбаса да, ол арнайы жабдықтарда, мысалы, цифрлық сигналдарды өңдеуде, желілік маршрутизацияда, графикалық өңдеуде, телеметрияда және соңғы кезде деректер қоймасында және жасанды интеллектте (мысалы: полиморфты деректер ағыны конволюциялық қозғалтқышы, құрылымдық басқару, деректер ағынын жоспарлау) сәтті іске асырылды. Бұл сонымен қатар көптеген бағдарламалық архитектураларда, оның ішінде деректер базасының қозғалтқыштарында және параллель есептеу жүйелерінде де маңызды. Синхронды деректер ағыны архитектурасы, желілік жылдамдықпен пакеттерді жіберу сияқты нақты уақыт деректер жолының қолданбаларымен сәйкес келеді. Табиғаты бойынша детерминистік деректер ағыны архитектурасы бағдарламашыларға процессорлық жүктемені теңестіру, синхрондау және ортақ ресурстарға қол жеткізу сияқты күрделі міндеттерді басқаруға мүмкіндік береді. Алайда, терминологияда қайшылық бар, себебі деректер ағыны термині параллель бағдарламалаудың бір саласы үшін қолданылады: деректер ағыны бағдарламалау үшін.
Dataflow architecture is a dataflow based computer architecture that directly contrasts the traditional von Neumann architecture or control flow architecture. Dataflow architectures have no program counter, in concept: the executability and execution of instructions is solely determined based on the availability of input arguments to the instructions, so that the order of instruction execution may be hard to predict. Although no commercially successful general purpose computer hardware has used a dataflow architecture, it has been successfully implemented in specialized hardware such as in digital signal processing, network routing, graphics processing, telemetry, and more recently in data warehousing, and artificial intelligence (as: polymorphic dataflow Convolution Engine, structure driven, dataflow scheduling). It is also very relevant in many software architectures today including database engine designs and parallel computing frameworks. Synchronous dataflow architectures tune to match the workload presented by real time data path applications such as wire speed packet forwarding. Dataflow architectures that are deterministic in nature enable programmers to manage complex tasks such as processor load balancing, synchronization and accesses to common resources. Meanwhile, there is a clash of terminology, since the term dataflow is used for a subarea of parallel programming: for dataflow programming.
Статикалық және динамикалық деректер ағыны машиналары
Дерекке тәуелділік тегтері ретінде дәстүрлі жад адрестерін пайдаланатын конструкциялар статикалық дерек ағыны машиналары деп аталады. Бұл машиналар бірдей процедуралардың бірнеше данасының бір уақытта орындалуына мүмкіндік бермеді, себебі қарапайым тегтер оларды ажырата алмады. Контенттік адрестемелі жадты (CAM) пайдаланатын конструкциялар динамикалық дерек ағыны машиналары деп аталады. Олар параллелизмді жеңілдету үшін жадтағы тегтерді қолданады.
Компилятор
Көбінесе басқару ағыны архитектурасында компиляторлар екілік шығыс файлдарындағы нұсқаулар тізбектерін тиімді ұйымдастыру үшін нұсқаулар арасындағы деректерге тәуелділіктерді бағдарламаның бастапқы кодын талдайды. Нұсқаулар ретті түрде ұйымдастырылады, бірақ тәуелділік туралы ақпараттың өзі бинарлық файлдарда сақталмайды. Деректер ағыны машинасы үшін құрастырылған бинарлық файлдарда осы тәуелділік туралы ақпарат болады. Деректер ағыны компиляторы осы тәуелділіктерді айнымалы атауларын пайдаланудың орнына әр тәуелділік үшін бірегей белгілерді (тегтерді) жасау арқылы тіркейді. Әр тәуелділікке бірегей белгі беру арқылы ол бинарлық файлдағы тәуелді емес код сегменттерін ретсіз және параллель түрде орындауға мүмкіндік береді. Компилятор циклдарды, тоқтату операторларын (break statements) және дерек ағыны үшін әртүрлі бағдарламалық басқару синтаксисін анықтайды.
Бағдарламалар
Бағдарламалар динамикалық деректер ағыны компьютердің CAM-іне жүктеледі. Инструкцияның барлық таңбаланған операндалары қолжетімді болғанда (яғни, бұрынғы инструкциялардың нәтижесінен және/немесе пайдаланушы енгізген деректерден), инструкция орындау блогымен орындалуға дайын деп белгіленеді. Бұл инструкцияны іске қосу немесе орындауға жіберу деп аталады. Орындау блогы инструкцияны орындағаннан кейін, оның шығыс деректері (оның таңбасымен бірге) CAM-ге жіберіледі. Осы дерекке (оның таңбалық мәнімен анықталады) тәуелді барлық инструкциялар орындалуға дайын деп белгіленеді. Осылайша, келесі инструкциялар дұрыс ретпен орындалады, бәсекелестік жағдайларын болдырмайды. Бұл рет адам бағдарламашы көздеген реттілік реттен, бағдарламаланған реттен өзгеше болуы мүмкін.
Нұсқаулық
Нұсқау, қажетті дерек операндаларымен бірге, орындау блогына пакет ретінде жіберіледі, бұл нұсқау токені деп те аталады. Сол сияқты, шығыс деректері CAM-ге дерек токені ретінде қайтарылады. Нұсқаулар мен нәтижелерді пакеттеу дайын нұсқауларды кең ауқымда параллель түрде орындауға мүмкіндік береді. Дерек ағыны желілері нұсқау токендерін орындау бірліктеріне жеткізеді және дерек токендерін CAM-ге қайтарады. Дәстүрлі фон Нейман архитектурасынан өзгеше, дерек токендері жадта тұрақты сақталмайды, олар нұсқау сақтағышына жіберілген кезде ғана болатын уақытша хабарламалар болып табылады.