یکی از محدودیت های پایه ای در امکان اجرای همروند دستورها یک برنامه، مفهوم وابستگی داده ( به انگلیسی: Data Dependency ) است. برای مثال، یک دستور تا زمانی که داده های مورد نیازش آماده و در دسترس نباشند نمی تواند اجرا شود. در علوم رایانه، وابستگی داده به موقعیتی گفته می شود که یک دستور به داده های دستورها قبل و یا بعد از خود نیاز دارد.
به طور کلی، اگر اجرای هم زمان دو دستور ممکن نباشد و اجرای آن ها باید به صورت متوالی انجام شود، آن ها را وابسته می گوییم.
انواع وابستگی عبارت اند از:
• وابستگی داده
• وابستگی نام
• وابستگی کنترل
در نظریه کامپایلر، برای تشخیص وابستگی از فنون آنالیز وابستگی ( به انگلیسی: Dependence Analysis ) استفاده می شود.
دو دستور S 1 و S 2 را در نظر می گیریم که دستور S 2 در جایی بعد از دستور S 1 قرار دارد. I ( S i ) و O ( S i ) را به ترتیب مجموعه خانه هایی از حافظه که S i از آن ها می خواند و مجموعه خانه هایی از حافظه که S i در آن ها می نویسد، تعریف می کنیم. در این صورت با برقراری شرط زیر که به شرط Bernstein موسوم است، می گوییم S 2 به S 1 وابسته است:
∪ ∪ ≠ ∅
به این ترتیب انواع وابستگی داده به صورت زیر تعریف می شود:
• وابستگی جریان ( داده ) : زمانی که ≠ ∅ {\displaystyle \ \neq \ \varnothing } و S 2 {\displaystyle S_{2}} از حافظه مشترک چیزی را پس از نوشتن S 1 {\displaystyle S_{1}} می خواند.
• پاد وابستگی: زمانی که ≠ ∅ {\displaystyle \ \neq \ \varnothing } و S 2 {\displaystyle S_{2}} حافظه مشترک را پس از خواندن S 1 {\displaystyle S_{1}} بازنویسی می کند.
• وابستگی خروجی: زمانی که ≠ ∅ {\displaystyle \ \neq \ \varnothing } و S 2 {\displaystyle S_{2}} و S 1 {\displaystyle S_{1}} هر دو بر روی حافظه مشترک می نویسند.
در برخی منابع، نوع چهارمی هم به صورت زیر تعریف می شود:
• وابستگی ورودی: زمانی که ≠ ∅ {\displaystyle \ \neq \ \varnothing } و S 2 {\displaystyle S_{2}} و S 1 {\displaystyle S_{1}} هر دو از حافظه مشترک می خوانند.
وابستگی جریان ( به انگلیسی: Flow Dependency ) که به آن وابستگی داده ( به انگلیسی: Data Dependency ) ، وابستگی صحیح ( به انگلیسی: True Dependency ) و خواندن بعد از نوشتن ( به انگلیسی: ( RAW ) Read - after - write ) نیز گفته می شود، هنگامی رخ می دهد که یک دستور به نتیجه دستوری قبل از خود وابسته باشد. مثال زیر را با فرض اینکه مقدار x و y از قبل محاسبه شده است در نظر بگیرید:

این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفبه طور کلی، اگر اجرای هم زمان دو دستور ممکن نباشد و اجرای آن ها باید به صورت متوالی انجام شود، آن ها را وابسته می گوییم.
انواع وابستگی عبارت اند از:
• وابستگی داده
• وابستگی نام
• وابستگی کنترل
در نظریه کامپایلر، برای تشخیص وابستگی از فنون آنالیز وابستگی ( به انگلیسی: Dependence Analysis ) استفاده می شود.
دو دستور S 1 و S 2 را در نظر می گیریم که دستور S 2 در جایی بعد از دستور S 1 قرار دارد. I ( S i ) و O ( S i ) را به ترتیب مجموعه خانه هایی از حافظه که S i از آن ها می خواند و مجموعه خانه هایی از حافظه که S i در آن ها می نویسد، تعریف می کنیم. در این صورت با برقراری شرط زیر که به شرط Bernstein موسوم است، می گوییم S 2 به S 1 وابسته است:
∪ ∪ ≠ ∅
به این ترتیب انواع وابستگی داده به صورت زیر تعریف می شود:
• وابستگی جریان ( داده ) : زمانی که ≠ ∅ {\displaystyle \ \neq \ \varnothing } و S 2 {\displaystyle S_{2}} از حافظه مشترک چیزی را پس از نوشتن S 1 {\displaystyle S_{1}} می خواند.
• پاد وابستگی: زمانی که ≠ ∅ {\displaystyle \ \neq \ \varnothing } و S 2 {\displaystyle S_{2}} حافظه مشترک را پس از خواندن S 1 {\displaystyle S_{1}} بازنویسی می کند.
• وابستگی خروجی: زمانی که ≠ ∅ {\displaystyle \ \neq \ \varnothing } و S 2 {\displaystyle S_{2}} و S 1 {\displaystyle S_{1}} هر دو بر روی حافظه مشترک می نویسند.
در برخی منابع، نوع چهارمی هم به صورت زیر تعریف می شود:
• وابستگی ورودی: زمانی که ≠ ∅ {\displaystyle \ \neq \ \varnothing } و S 2 {\displaystyle S_{2}} و S 1 {\displaystyle S_{1}} هر دو از حافظه مشترک می خوانند.
وابستگی جریان ( به انگلیسی: Flow Dependency ) که به آن وابستگی داده ( به انگلیسی: Data Dependency ) ، وابستگی صحیح ( به انگلیسی: True Dependency ) و خواندن بعد از نوشتن ( به انگلیسی: ( RAW ) Read - after - write ) نیز گفته می شود، هنگامی رخ می دهد که یک دستور به نتیجه دستوری قبل از خود وابسته باشد. مثال زیر را با فرض اینکه مقدار x و y از قبل محاسبه شده است در نظر بگیرید:


wiki: وابستگی داده