มีหลายวิธีที่ซอฟต์แวร์ที่ทำงานบน CPU บนพีซีสามารถสื่อสารกับฮาร์ดแวร์ส่วนที่เหลือได้
เข้าใจง่ายที่สุดคือพอร์ต I / O ซอฟต์แวร์ใช้คำสั่ง OUT เพื่อเขียน 8, 16, หรือ 32 บิตต่อครั้งไปยังพอร์ต I / O ในทำนองเดียวกันซอฟต์แวร์จะใช้คำสั่ง IN เพื่ออ่านจากพอร์ต I / O พอร์ต I / O นั้นอาศัยอยู่ในพื้นที่ที่อยู่ 16 บิตแยกจากกันซึ่งไม่เกี่ยวข้องกับพื้นที่ที่อยู่ที่ใช้โดยหน่วยความจำหลัก ฮาร์ดแวร์แต่ละชิ้นที่ใช้พอร์ต I / O มีช่วงของที่อยู่ I / O การเขียนและการอ่านจากที่อยู่เหล่านี้แต่ละรายการมีผลกระทบที่แตกต่างกัน (และบ่อยครั้งที่การอ่านและการเขียนจากที่อยู่เดียวกันนั้นมีผลต่างกันด้วย)
อีกวิธีหนึ่งคือ I / O ที่แม็พหน่วยความจำซึ่งส่วนหนึ่งของพื้นที่แอดเดรสหน่วยความจำถูกแม็พกับฮาร์ดแวร์ แทนที่จะไปที่หน่วยความจำหลักการอ่านและเขียนจากและไปยังพื้นที่หน่วยความจำนั้นไปที่ฮาร์ดแวร์ที่เกี่ยวข้อง สิ่งที่พวกเขาหมายถึงขึ้นอยู่กับฮาร์ดแวร์และภูมิภาค (ไม่ใช่เรื่องแปลกที่จะมีพื้นที่ I / O ที่แมปหน่วยความจำมากกว่าหนึ่งในฮาร์ดแวร์ชิ้นเดียวกัน); การอ่านและการเขียนสามารถมีเอฟเฟกต์พิเศษ (เหมือนกับพอร์ต I / O) หรือสามารถอ่านและเขียนโดยตรงไปยังหน่วยความจำบนฮาร์ดแวร์ (ตัวอย่างเช่นบัฟเฟอร์เฟรมของการ์ดวิดีโอ)
ในอีกทางหนึ่ง (ส่วนที่เหลือของฮาร์ดแวร์พูดคุยกับซอฟต์แวร์ที่ทำงานบน CPU) ก็มีหลายวิธี สิ่งที่ง่ายที่สุดคือรอให้ซอฟต์แวร์ถาม (ผ่านพอร์ต I / O หรือหน่วยความจำที่แมป I / O) ใช้เพียงอย่างเดียวสิ่งนี้อาจไร้ประสิทธิภาพมาก
อีกวิธีหนึ่งคือสำหรับฮาร์ดแวร์ที่จะเขียนโดยตรงไปยังหน่วยความจำหลัก วิธีนี้มีประสิทธิภาพมากสำหรับการถ่ายโอนข้อมูลจำนวนมากและสามารถใช้ในทิศทางอื่นได้เช่นกัน (เพื่ออ่านจากหน่วยความจำหลัก) อย่างไรก็ตามซอฟต์แวร์ยังต้องทราบเมื่อการถ่ายโอนเสร็จสิ้น
วิธีสุดท้ายคือการขัดจังหวะ CPU ได้รับการร้องขอขัดจังหวะพร้อมกับหมายเลขขัดจังหวะ CPU ขัดจังหวะ (ชื่อ) สิ่งที่มันทำและสลับไปยังส่วนอื่นของรหัส (ส่วนใดขึ้นอยู่กับหมายเลขขัดจังหวะ) โดยปกติฮาร์ดแวร์แต่ละตัวจะสอดคล้องกับหมายเลขอินเตอร์รัปต์เดียว แต่หมายเลขอินเตอร์รัปต์มักจะถูกใช้ร่วมกันโดยแหล่งขัดจังหวะหลายแหล่ง นอกจากนี้ยังมีการขัดจังหวะแบบพิเศษที่ไม่มีหมายเลข เช่น NMI
เพื่อเป็นตัวอย่างในทางปฏิบัติลองมาการ์ดเชื่อมต่อเครือข่ายที่เรียบง่าย การ์ดเครือข่ายนี้มีชุดของการลงทะเบียนซึ่งสามารถ acessed ผ่านพอร์ต I / O หรือ I / O ที่แมปหน่วยความจำ นอกจากนี้ยังสามารถอ่านและเขียนจากหน่วยความจำหลักและมีหมุดขัดจังหวะ
ในการส่งแพ็คเก็ตไปยังเครือข่ายไดรเวอร์การ์ดเครือข่ายจะเขียนแพ็คเก็ตแบบเต็มไปยังหน่วยความจำก่อนตามที่อยู่ที่จัดชิดกับหลายไบต์ 4 จากนั้นจะเขียนลงทะเบียนสองสามอันบนการ์ดอินเทอร์เฟซเครือข่ายบอกที่อยู่หน่วยความจำขนาดแพ็คเก็ตและข้อมูลอื่น ๆ การ์ดเครือข่ายจะอ่านแพ็คเก็ตจากหน่วยความจำส่งไปยังเครือข่ายและส่งสัญญาณการขัดจังหวะ ตัวควบคุมการขัดจังหวะ (ฮาร์ดแวร์แยกชิ้น) ส่งคำขอการขัดจังหวะไปยัง CPU และบอกหมายเลขขัดจังหวะ ในตัวจัดการอินเทอร์รัปต์ไดรเวอร์จะอ่านการลงทะเบียนจากการ์ดซึ่งบอกว่าอินเทอร์รัปต์นั้นเกี่ยวกับแพ็คเก็ตที่ถูกส่งอ่านอีกรีจิสเตอร์เพื่อหาว่าแพ็กเก็ตใดถูกส่งไป .
ในการรับแพ็คเก็ตจากเครือข่ายไดรเวอร์การ์ดเครือข่ายจะจัดสรรบล็อกหน่วยความจำที่จะใช้เป็นที่เก็บข้อมูลสำหรับแพ็คเก็ตและเขียนลงทะเบียนจำนวนมากบนการ์ดเพื่อบอกที่อยู่หน่วยความจำของบล็อกหน่วยความจำขนาดและข้อมูลอื่น ๆ . เมื่อได้รับแพ็คเก็ตจากเครือข่ายการ์ดเครือข่ายจะเขียนลงในบล็อกของหน่วยความจำพร้อมกับขนาดของแพ็คเก็ตและข้อมูลอื่น ๆ มันอัพเดตรีจิสเตอร์บางตัวที่บอกทั้งตัวมันและคนขับว่ามีพื้นที่ว่างในบล็อกหน่วยความจำเท่าใดซึ่งพื้นที่ว่างเริ่มต้นขึ้นและพื้นที่ที่ใช้เริ่มต้นขึ้น (บัฟเฟอร์นั้นเป็นวงกลมดังนั้นหลังจากที่มันสิ้นสุดลง ไปที่จุดเริ่มต้น) ในที่สุดมันก็ส่งสัญญาณการขัดจังหวะ ไดรเวอร์จะอ่านการลงทะเบียนและหน่วยความจำเพื่อรับแพ็คเก็ต
มีสิ่งอื่น ๆ ที่การ์ดสามารถบอกคนขับด้วยการเขียนการลงทะเบียนและส่งสัญญาณการขัดจังหวะ ตัวอย่างเช่นสายเคเบิลเครือข่ายถูกถอดปลั๊กว่ามีข้อผิดพลาดในการส่งข้อมูลและอื่น ๆ