עבור לתוכן

צורת העברת המידע במחשב

Featured Replies

פורסם

למיטב זיכרוני, במצב PIO, בקר ה-IDE בסה"כ "השתלט" על פסיקה (Interrupt) לגישה לזיכרון במקום המעבד (חלוקת שימוש בזיכרון) לזמן מוגבל כלשהו.

כלומר, המידע לא עבר ישירות למעבד.

המידע לפי הבנתי עובר תמיד קודם לזיכרון ואח"כ למעבד.

PIO ו-UDMA מסמלות בסה"כ את אופן הגישה לזיכרון ועל חשבון מה (אם בכלל).

אם אתה יודע אחרת - אשמח אם תאיר את עיניי.

עריכה : UDMA, איך שאני רואה את זה, מדלג על שלב במעבר מידע לזיכרון. במקום גישה דרך הגשר הצפוני עם כל המידע שמגיע דרך הגשר הדרומי - מתאפשרת גישה ישירה לבקר הזיכרון או לזיכרון עצמו. כלומר, המידע מהדיסקים הקשיחים לא צריך ל"התחרות" מול מידע אחר שמגיע מבקרי USB,פייר-וויר,סאונד וכו', אלא יש לו עדיפות וגישה נפרדת לזיכרון. דבר שמאיץ את העניינים כמובן.

זה שאלה טובה שווה לבדוק... המילה "דרך" אולי לא היתה נכונה, אבל המעבד לוקח חלק פעיל בסנכרון במצב הישן, לגבי איך זה עובד ב DMA אפשר לבדוק...

אבל זה כבר OT לגבי השאלה המקורית של האם המעבד יכול לגשת לדברים אחרים חוץ מזכרון ראשי (כי הוא כן)...

  • תגובות 37
  • צפיות 2.3k
  • נוצר
  • תגובה אחרונה
פורסם

זה שאלה טובה שווה לבדוק... המילה "דרך" אולי לא היתה נכונה, אבל המעבד לוקח חלק פעיל בסנכרון במצב הישן, לגבי איך זה עובד ב DMA אפשר לבדוק...

אבל זה כבר OT לגבי השאלה המקורית של האם המעבד יכול לגשת לדברים אחרים חוץ מזכרון ראשי (כי הוא כן)...

שמע, מבחינה עקרונית ותיאורתית - המעבד יכול לגשת לכל רכיב במערכת.

הוא יחידת העיבוד המרכזית.

אבל מבחינה מעשית, במקום שההר יבוא למוחמד - מוחמד בא להר, וכל הנתונים מגיעים לזיכרון הראשי ומשם למעבד.

אם זה לא מה שפותח השרשור שאל - לא נורא, קיבל קצת הרחבה.

;)

פורסם

http://en.wikipedia.org/wiki/I/O_methods

ואני מצטט

Port-mapped I/O uses a special class of CPU instructions specifically for performing I/O. This is generally found on Intel microprocessors, specifically the IN and OUT instructions which can read and write a single byte to an I/O device. I/O devices have a separate address space from general memory, either accomplished by an extra "I/O" pin on the CPU's physical interface, or an entire bus dedicated to I/O.

הבחור (במקור) שאל אם יש אפשרות למעבד לקרוא מידע מדברים אחרים (לא זכרון), אז התשובה היא כן, וככה עושים את זה, אם זה יעיל או לא, ואילו אפשרויות אחרות יש, זה כבר דיון אחר...

לגבי הכתובות של זה, אתה מוזמן לקרוא באינטרנט, יש כתובת מוגדרות לכל התקן שקיים במחשב...

------

הנה דוגמא קצרה בשרת שלי, כשאר אני כותב LS /PROC/PROC:

0000-001f : dma1

0020-0021 : pic1

0040-0043 : timer0

0050-0053 : timer1

0060-006f : keyboard

0070-0077 : rtc

0080-008f : dma page reg

00a0-00a1 : pic2

00c0-00df : dma2

00f0-00ff : fpu

0170-0177 : ide1

01f0-01f7 : ide0

0376-0376 : ide1

03c0-03df : vga+

ויש עוד...

עם זה אין לי שום בעיה, המידע רק עובר דרך המעבד לזכרון, פעולת IO, לא פעולת עיבוד,

זה בדיוק מה שאמרתי, כלומר המעבד לא עובד מול מידע שנמצא בכונן ומבצע עליו חישובים,

זה קורה רק מול הזכרון הראשי.

עד שאין למידע כתובת בזכרון הראשי המעבד לא יכול לבצע איתו חישובים, כל ה DMA IPO

הם בסך הכל מנגנונים לייעול פעולות ה IO, שום דבר מעבר לכך.

אתה יכול להבין משאלות ההמשך של השואל המקורי למה הוא היתכוון, הוא רצה לדעת מה קורה

כאשר יש מעט זכרון ראשי במערכת, והתשובה היא המחשב עובר לזחילה משום שפעולות ה

IO חונקות את המעבד.

פורסם

כמה דברים:

1. אם אין מספיק זיכרון להפעלת תוכנה - היא פשוט לא תעלה.

2. זיכרון וירטואלי - כאשר אין מספיק מקום בזיכרון ה RAM ויש צורך להכניס עוד מידע, חלק מהדיסק הקשיח מוקצה בתור זיכרון וירטואלי. מכיוון שהדיסק הקשיח הוא התקן מאד איטי (יחסית לזיכרון ה RAM), המידע שנשמר בזיכרון הוירטואלי הוא מידע שאינו דרוש באופן מיידי. לדוגמא - אם הפעלת במקביל גם את תוכנת WORD וגם משחק כלשהו, ואתה משתמש במשחק (היישום הפעיל), ונגמר המקום בזיכרון, הזיכרון שצורכת תוכנת ה WORD "יורד" לדיסק הקשיח, ובכך מתפנה עוד זיכרון RAM למשחק.

3. לכל התקן במחשב יש כתובת, כלומר - ניתן לשלוח ולקבל ממנו מידע. הכוונה בהתקן - כל רכיב במחשב - החל מהרמקול הפנימי ועד כרטיס המסך (אפשר למשל בעזרת DEBUG לגרום לרמקול של המחשב לצפצף, ניסיתי). הכתובת של כל התקן תלויה ביצרן הלוח/ה chipset. הכתובות של כרטיסי הרחבה נקבעים לפי ה slot בו הם יושבים (לכל slot יש טווח כתובות שונה).

4. כל המידע שעובר במחשב יכול לעבור דרך המעבד, אבל זה יהיה בזבוז, במיוחד כאשר אין צורך בעיבוד, ולכן קיים בקר ה DMA. תפקידו - לאפשר גישה ישירה לזיכרון בלי לעבור דרך המעבד. הדוגמא הכי נפוצה לכך היא כרטיס קול - מידע יכול לעבור ישירות בין הזיכרון (RAM) לכרטיס הקול, שם הוא הופך לסאונד (המעבד לא צריך לבצע עיבוד כלשהו על המידע שמגיע מהזיכרון).

* בקשר ל UDMA ודיסקים קשיחים - אני לא בטוח שיש קשר בין השם הזה לבין בקר ה DMA.

פורסם

נכון, חל בילבול גם מבחינתי ..

רשמתי UDMA והתכוונתי לבקר DMA.

פורסם
  • מחבר

אוקיי בקשר לdma את זה ידעתי

כשהיה pio כל העברת נתונים גם אם לא היה צורך בעיבוד עברה דרך המעבד אבל ה dma הגיע וזה השתנה...

עכשיו בקשר לשאלה שלי

כשהמעבד רוצה מידע מהארדיסק או מהתקן אחר הוא פונה לציפסט (בקר ההתקן) הבקר מבקשר מההתקן לשלוח לram את המידע

ומשם המעבד לוקח את המידע

הבנתי נכון?

פורסם

נכון מאוד.

פורסם

ניתן בהחלט לגשת ישירות להתקנים בעזרת פעולות In ו Out.

אני יכול למשל בעזרת פקודות אלו לתכנת מחדש, או לקבל אינפורמציה משעון זמן האמת של המערכת (RTC), וגם לקרוא ולכתוב מידע לדיסק הקשיח.

פעולה מול דיסק קשיח קצת יותר מסובכת, ולכן הביוס נותן מספר שגרות שמקלות על העבודה מול הדיסק הקשיח (הפקודות מרוכזות ב Int13h). העבודה נעשית מול הרג'יסטרים של המעבד.

כאשר המעבד משגר ישירות לדיסק בקשות קריאה וכתיבה התהליך נקרא Programmed I/O.

מצד שני, במחשבים יש בקר DMA. המעבד יכול לתכנת את בקר ה DMA שיביא מידע מסויים מהתקן מסויים שתומך ב DMA למקום מסויים בזיכרון.

ברגע שהבקר מתוכנת, הוא יתחיל לעבוד ובינתיים המעבד ילך לעשות משהו אחר יותר מועיל.

כאשר המידע מוכן, תתקבל פסיקה (Interrupt), והמעבד ידע שהמידע שהוא ביקש מוכן, והוא יוכל ללכת ולעשות איתו מה שהוא רוצה.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים