معماری گردش داده ( به انگلیسی: Dataflow Architecture ) یک روش معماری کامپیوتر است که در معماری های پردازش موازی به کار می رود و کاملاً با روش کلاسیک فون نویمن یا کنترل گردش ( Control Flow ) در تضاد است. در معماری گردش داده، شمارنده برنامه ( Program Counter ) وجود ندارد، یا توانایی اجرا ( Executibility ) و اجرای دستورها تنها بر اساس موجود بودن آرگومان های ورودی تشخیص داده می شود. اگرچه هیچ محصول تجاری موفقی در زمینه سخت افزارهای با اهداف کلی ( General Purpose ) از این روش استفاده نمی کند، ولی اخیراً پیاده سازی های موفقی از آن در سیستم های تخصصی مثل پردازش سیگنال های دیجیتال، مسیریابی شبکه ها، پردازش گرافیکی و جدیدترین آن در انبارداری داده ( Data Warehousing ) استفاده می شود. همچنین این روش در بسیاری از معماری های نرم افزاری هم استفاده می شود مثل طراحی موتورهای پایگاه داده ای و چهارچوب های پردازش موازی. معماری های گردش داده همزمان ( Synchronous Data Flow Architecture ) وفق یافته اند تا بار کاری تحمیل شده توسط یک مسیرداده ای همزمان مثلاً سرعت یک سیم در پیش فرستادن بسته ها را میزان کند. معماری گردش داده ای به صورت طبیعی برنامه ریزان را قادر می سازد تا بتوانند کارهای پیچیده ای از جمله بالانس کردن بارپردازشی را به صورت همزمان انجام دهند، همچنین در این روش در دسترسی به منابع مشترک هم بسیار مؤثر عمل می کند. معماری سخت افزاری برای گردش داده ها یک از مهم ترین مساثل در معماری کامپیوترها در دهه هفتاد میلادی و اوایل دهه هشتاد میلادی بود. جک دنیس ( Jack Dennis ) از دانشگاه MIT در زمینه معماری گردش داده ایستا پیشرو بود و این درست در زمانی بود که همزمان پروژهای معماری Manchester Dataflow Machine و MIT Tagged Token در زمینه ماشین های با معماری گردش داده پویا را نیز در حال اجرا بودند. طراحی هایی که از روش های معمول آدرس دهی حافظه به عنوان استقلال داده ای استفاده می کنند ( Data Dependency ) را ماشین های گردش داده ای ایستا می گویند. این ماشین ها اجازه نمی دهند تا چند نمونه ( instance ) از یک رویه ( routine ) به صورت همزمان ساخته و اجرا شود. دلیل این امر این است که برچسب ساده ( simple tag ) نمی تواند میان آنان تفاوت قائل شود. طراحی هایی که از Content Addressable Memory ) CAM ) استفاده می کنند را ماشین های با گردش داده پویا می گویند. این برنامه ها از برچسب هایی استفاده می کنند که پردازش موازی را تسهیل می کند. به صورت عادی کامپایلر ها ( compilers ) متن اصلی برنامه ( source code ) را آنالیز می کنند تا وابستگی های داده ای میان دستورها را برای ساماندهی بهتر ترتیب دستورها، در فایل باینری خروجی، بیابد. دستورها به صورت ترتیبی ساماندهی شده اند ولی اطلاعات مربوط به وابستگی در فایل های باینری ذخیره نمی شوند. فایل های باینری ای که برای ماشین های گردش داده ای ذخیره می شوند، حاوی این اطلاعات وابستگی هستند. کامپایلر برای نگهداری این اطلاعات به جای استفاده از متغیرها از از برچسب های یکتایی استفاده می کند. با استفاده از این روش برچسب گذاری به قطعه کد غیر مستقل اجازه داده می شود که در پردازش موازی بدون ترتیب ( out of order ) اجرا شود. برنامه ها در CAM کامپیوتر جریان داده پویا ذخیره می شوند. هنگامی که همه عملونده های یک دستورالعمل فعال می شوند ( یعنی خروجی یک دستورالعمل قبلی ویا یک ورودی از کاربر ) ، دستور به عنوان دستور آماده علامت گذاری می شود. این عمل توسط یک بخش اجرایی ( execution unit ) انجام می شود. به این عمل فعالسازی ( activation ) یا شعله ور کردن ( firing ) دستورالعمل می گویند. به محض این که عملیات بخش اجرایی بر روی یک دستور خاتمه می یابد، خروجی آن در CAM ذخیره می شود ( به همراه برچسب آن ) . هر دستوری که به که به داده خاصی وابسته باشد ( این امر با بررسی مقدار برچسب شناسایی می شود ) و سپس به عنوان آماده برای اجرا برچسب می خورد. در این حالت دستورها بعدی با ترتیب درست اجرا می شوندو از حالت مسابقه ای پرهیز می شود ( race condition ) . این ترتیب اجرا احتمالاً با ترتیب مورد انتظار نوشته شده توسط انسان متفاوت خواهد بود. یک دستورالعمل به همراه عملوندهای مورد نیاز آن، به شکل یک بسته به بخش اجرایی فرستاده می شود، که به آن instruction token گفته می شود. به صورت مشابه، داده خروجی به عوان token به CAM بازگردانده می شود. این بسته سازی دستورها و نتایج اجازه می دهد تادستورات در پردازش موازی بتوانند در ابعاد بزرگ اجرا شوند. شبکه های جریان داده وظیفه رساندن دستورها به شکل token را به بخش اجرایی و برعکس به CAM را بر عهده دارند. کاملاً برعکس معماری فون نویمن، tokenها به شکل پایدار در حافظه ذخیره نمی شوند، بلکه آن ها پیام های موقتی هستند که در زمان تبادل دستورها ذخیره می شوند. تحقیقات هنوز نتوانسته اند به مسائل مربوط به موارد زیر هیچگاه فائق بیایند:
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفwiki: معماری جریان داده