Современные шины уже совсем другие чем были раньше.
Раньше шины были параллельные. Сейчас шины последовательные. И даже более того все они похожи как две капли воды USB, PCIe, Ethernet, SATA. Так в чем же дело? А дело в том что есть законы физики. Скорость света C=300 000 000 м/с . А частота шин дошла до f=100мгц и даже 1ГГц никого не удивишь. И еще вспомним что сигнал у нас имеет 2 положения П_П_П
C/f/2=(300 000 000 м/с) / (100 000 000 1/c)/2=1.5 м
Если f=1 Ггц то имеем 0.15 м
Если f=5ГГц то имеем 0.03м
Что дает эта формула? Эта формула показывает на каком расстояние/размере частота не вносит существенных изменений в поведение сигналов. Поясню на примере.
Если у нас частота 5Ггц и у нас есть 2 проводка длинной 1м. Но на самом деле проводки то не одинаковые они имеют погрешности Если эта погрешность будет 0.03 м стандартная статистическая погрешность 5-7% то сигналы на разных проводниках будут приходить в разные такты !!!
На самом деле все еще хуже. В классических шинах еще есть сигналы подтверждающие прием данных и они должны успевать между выставленными данными. А это значит что надо гарантировать точность еще на 1 порядок.
Если f=0.1 ГГц то имеем 0.15м
Если f=1 ГГц то имеем 0.015м
Если f=5ГГц то имеем 0.003м
Такую точность нельзя гарантировать для параллельных шин.
А вот если выкинуть все параллельные шины, то можно сделать последовательные. Передачу данных это решает проблему соблюдения длины проводов ее просто нет. Есть и другая проблема параллельных проводов они дают помеху если есть переключение. Причем помеха очень сильная.
3 проблема сложная конструкция разводка плат. Современные матерински платы многослойные десятки слоев!!! Да и тянуть многожильный кабель трудно, да и габариты увеличивает.
Помимо этого есть проблема затухания сигнала. Поэтому применяют спаренное передачу данных разноименных знаков.
Еще особенностью при передачи данных нужно еще сделать защиту от помех.
Так вот во всех перечисленных шинах стали популярны коды 8b/10b Когда 8 бита данных кодируется 10. Особенность этого кода в том что он делает достаточно равномерное чередование 0 1.
Интересная новость.
http://www.ixbt.com/news/hard/index.shtml#id122197Advanced Micro Devices и Hewlett-Packard выступили с предложением сделать мультиплексор протоколов для PCIe. Как вы понимаете все шины по сути отличаются только протоколами общения, а конструкции очень схожи.
К чему это все приведет? Можно сделать новую конструкцию компьютера.
Отказаться от DDR, PCI, ISA, SATA, USB, PCIe.
Оставить один интерфейс назовем его EB — Express Bus.
1 магистраль Data+ Data- GND GND
Возьмем частоту 5ГГц и кодирование 8b/10b
Суть в том что у нам не нужны разнообразные шины и число проводов можно свести к минимуму.
PCIe может иметь несколько магистралей. Каждая магистраль не зависима. Это значит что передавать по ней можно различные данные. Это большой плюс.
Эти магистрали группируются в слоты. На данный момент у каждого слота свой контроллер шины но это как по мне лишнее.
Так вот так как магистрали независимы, то мы можем легко сделать следующее.
Берем нашу EB. 32 магистрали подводим к чипам RAM. Надо больше можно больше.
Но 32 достаточно можно 64. 5/10*8*16 =4ГБит*32=128 ГБит/с
Современный DDR работает на частоте 1ГГц и передает 32 бита данных за раз.
32ГБит/c
Так как обычно 8 или 16 чипов/ банков на планки то все хорошо. Не составит труда организовать параллельность. Кто там говорил про 3 канальную DDR? В моей разработки мы имеем 32 или 64 канала да меньшая скорость. Но с учетом тенденций к 8 ядерникам это в самый раз. Тем более жесткий и сетевая тоже смогут общаться параллельно. И видео карта тоже сможет работать с этой памятью параллельно почти не мешая друг другу.
Никто не мешает использовать одному ядру несколько магистралей одновременно параллельно для получения данных с большей скоростью. Только согласовать. Это может сделать биос. Собственно снижаем число ножек у процессора. Плюс если какая то магистраль выйдет из строя то это не проблема. На одной магистрали может сидеть несколько устройств. Поэтому в блоки памяти можно завести сколько угодно магистралей последовательно. Так как ядро обращается либо к памяти либо к регистрам и памятью устройству то это будут одни и тежи линии.
SATA HOST, USB HOST, Eternet контролере нам не нужен. Так как физический интерфейс такой же. Скорости согласовать. Нам нужен EB Host контроллер. Он будет реализовывать один из протоколов передачи данных.
А вот перекладывать вычисления на процессор не лучший вариант.
EB HOST довольно универсально и логичное устройство. А что от него требуется? Декодировать 8b/10b. Считать CRC и чексум организовывать кольцевой буфер и FIFO. Или пересылка данных в память. Посылать сообщения принимать сообщение. Такие сообщения могут служить прерываниями. Как процессора та и нашего EB контроллера. Он должен поддерживать автоматизацию Проще всего поставить микропроцессор.
Собственно на данный момент вышел USB 3.0 5ГГц и он обещает вытеснить все или почти все. Но вот если в PCIe 3.0 добавят свитч между протоколами, то он сможет посостизаца USB. За место главной шины.