конвейер

Архитектура процессоров. Конвейер, суперскалярные конвейер Out-of-Order-процессоры - Terralab#toptabs ul {display:none;}@import "http://www.terralab.ru/bitrix/php_interface/tl/styles.css"; .content {margin-right: 125px;}#skyright { left: 650px; }КомпьютерраБизнес-журналКомпьюлентаTerraLabCIO-WorldДомашний компьютерTerraLab поиск по сайту:новостиплатформавидеонакопителизвукцифрографиясетиmobilisкорпусапринтерывводкаталогценыфорумыПлатформаАрхитектура процессоров. Конвейер, суперскалярные конвейер Out-of-Order-процессорыАвтор: Сергей ОзеровОпубликовано 26 октября 2005 годаПродолжение статьи об истории развития архитектур процессоров. Чтение лучше начать с первой части.Шаг 3. Введение конвейераИдея конвейера, давным-давно предложенная Генри Фордом, состоит в том, что производительность цепочки последовательных действий определяется не сложностью этой цепочки, конвейер лишь длительностью самой сложной операции. Иными словами, совершенно неважно, сколько человек занимаются производством автомобиля конвейер как долго длится его изготовление в целом, - важно то, что если каждый человек в цепочке тратит, скажем, на свою операцию одну минуту, то с конвейера будет сходить один автомобиль в минуту, ни больше конвейер ни меньше; независимо от того, сколько операций нужно совершить с отдельным автомобилем конвейер сколько заняла бы его сборка одним человеком. Применительно к процессорам принцип конвейера означает, что если мы сумеем разбить выполнение машинной инструкции на несколько этапов, то тактовая частота (а вернее, скорость, с которой процессор забирает данные на исполнение конвейер выдает результаты) будет обратно пропорциональна времени выполнения самого медленного этапа. Если это время удастся сделать достаточно малым (а чем больше этапов на конвейере, тем они короче), то мы сумеем резко повысить тактовую частоту, конвейер значит, конвейер производительность процессора.Процедуру выполнения практически любой инструкции можно разбить как минимум на пять непересекающихся этапов:Выборка инструкции (FETCH) из памяти. Из программы извлекается инструкция, которую нужно выполнить.Декодирование инструкции (DECODE). Процессор "соображает", что от него хотят, конвейер переправляет запрос на нужное исполнительное устройство.Подготовка исходных данных для выполнения инструкции.Собственно выполнение инструкции (EXECUTE).Сохранение полученных результатов.Конвейеризация потенциально применима к любой процессорной архитектуре, независимо от набора команд конвейер положенных в ее основу принципов. Даже самый первый x86-процессор, Intel 8086, уже содержал своеобразный примитивный "двухстадийный конвейер" - выборка новых инструкций (FETCH) конвейер их исполнение осуществлялись в нем независимо друг от друга. Однако реализовать что-то более сложное для CISC-процессоров оказалось трудно: декодирование неоднородных CISC-инструкций конвейер их очень сильно различающаяся сложность привели к тому, что конвейер получается чересчур замысловатым, катастрофически усложняя процессор. Подобных трудностей у RISC-архитектуры гораздо меньше (а SPARC конвейер MIPS, например, конвейер вовсе были специально оптимизированы для конвейеризации), так что конвейеризированные RISC-процессоры появились на рынке много раньше, чем аналогичные x86.Недостатки конвейера неочевидны, но, как обычно конвейер бывает, из-за нескольких "мелочей" реализовать грамотно организованный конвейер совсем не просто. Основных проблем три.Необходимость наличия блокировок конвейера. Дело в том, что время исполнения большинства инструкций может очень сильно варьироваться. Скажем, умножение (и тем более деление) чисел требуют (на стадии EXECUTE) нескольких тактов, конвейер сложение или побитовые операции - одного такта; конвейер для операций Load конвейер Store, которые могут обращаться к разным уровням кэш-памяти или к оперативной памяти, это время вообще не определено (и может достигать сотен тактов). Соответственно, должен быть какой-то механизм, который бы "притормаживал" выборку конвейер декодирование новых инструкций до тех пор, пока не будут завершены старые. Методов решения этой проблемы много, но их развитие приводит к одному - в процессорах прямо перед исполнительными устройствами появляются специальные блоки-диспетчеры (dispatcher), которые накапливают подготовленные к исполнению инструкции, отслеживают выполнение ранее запущенных инструкций конвейер по мере освобождения исполнительных устройств отправляют на них новые инструкции. Даже если исполнение займет много тактов - внутренняя очередь диспетчера позволит в большинстве случаев не останавливать подготавливающий все новые конвейер новые инструкции конвейер[Новые инструкции тоже не каждый такт удается декодировать, так что возможна конвейер обратная ситуация: новых инструкций за такт не появилось, конвейер диспетчер отправляет инструкции на выполнение "из старых запасов"]. Так в процессоре возникает разделение на две независимо работающие подсистемы: Front-end (блоки, занимающиеся декодированием инструкций конвейер их подготовкой к исполнению) конвейер Back-end (блоки, собственно исполняющие инструкции).Необходимость наличия системы сброса процессора. Поскольку операции FETCH конвейер EXECUTE всегда выделены в отдельные стадии конвейера, то в тех случаях, когда в программном коде происходит разветвление (условный переход), зачастую оказывается, что по какой из веток пойти - пока неизвестно: инструкция, вычисляющая код условия, еще не выполнена[Вот здесь-то конвейер нужны те самые режимы выставления флагов PowerPC, о которых шла речь в сноске 2]. В результате процессор вынужден либо приостанавливать выборку новых инструкций до тех пор, пока не будет вычислен код условия (а это может занять очень много времени конвейер в типичном цикле страшно затормозит процессор), либо, руководствуясь соображениями блока предсказания переходов, "угадывать", какой из переходов скорее всего окажется правильным.Наконец, конвейер обычно требует наличия специального планировщика (scheduler), призванного решать конфликты по данным. Если в программе идет зависимая цепочка инструкций (когда инструкция-2, следующая за инструкцией-1, использует для своих вычислений данные, только что вычисленные инструкцией-1), конвейер время исполнения одной инструкции (от момента запуска на стадию EXECUTE конвейер до записи полученных результатов в регистры) превосходит один такт, то мы вынуждены придержать выполнение очередной инструкции до тех пор, пока не будет полностью выполнена ее предшественница. К примеру, если мы вычисляем выражение вида A•B+C с сохранением результата в переменной X (XfA•B+C), то процессор, выполняя соответствующую выражению цепочку из двух команд типа R4fR1•R2; R0fR3+R4, должен вначале дождаться, пока первая инструкция сохранит результат умножения A•B, конвейер только потом прибавлять к полученному результату число С. Цепочки зависимых инструкций в программах - скорее правило, нежели исключение, конвейер исполнение команды с записью результата в регистры за один такт - наоборот, скорее исключение, нежели правило, поэтому в той или иной степени с проблемой зависимости по данным любая конвейерная архитектура обязательно сталкивается. Оттого-то в конвейере конвейер появляются сложные декодеры, заранее выявляющие эти зависимости, конвейер планировщики, которые запускают инструкции на исполнение, выдерживая паузу между запуском главной инструкции конвейер зависимой от нее.Ну как вам список проблем? Идея конвейера в процессоре очень красива на словах конвейер в теории, однако реализовать ее даже в простом варианте чрезвычайно трудно. Но выгода от конвейеризации столь велика конвейер несомненна, что приходится с этими трудностями мириться, ведь ничего лучшего до сих пор не придумано.В 1991-92 годах корпорация Intel, освоив производство сложнейших кристаллов с более чем миллионом транзисторов, выпустила i486 - классический CISC-процессор архитектуры x86, но с пятистадийным конвейером. Чтобы вы смогли оценить этот рывок, приведу две цифры: тактовую частоту по сравнению с i386 введение конвейера позволило увеличить втрое, конвейер производительность на единицу частоты - вдвое. В i386 многие инструкции выполнялись за несколько тактов; конвейер в i486 среднее "время" исполнения инструкции в тактах удалось снизить почти вдвое. Правда, расплатой за это стала чудовищная сложность ядра i486; но такие "мелочи" по меркам индустрии центральных процессоров - пустяк: быстро растущие технологические возможности кремниевой технологии уже через пару лет позволили освоить производство i486 всем желающим. Но к тому моменту RISC-архитектуры сделали еще один шаг вперед - к суперскалярным процессорам.Блок предсказания переходовДа-да, именно так называется этот странный блок! Но "гадание на кофейной гуще" здесь ни при чем - переходы предсказываются на основе вполне научных соображений. Обычно используется очень простой способ: в процессоре ведется табличка ранее совершенных переходов - для каждого условного перехода подсчитывается, сколько раз он "сработал", конвейер сколько - "был проигнорирован". Поэтому, скажем, когда процессор встречает переход, замыкающий какой-нибудь цикл, то он быстренько начинает считать: раз переход сработал, два сработал, три сработал - ну, значит, наверное, он всегда будет срабатывать, вот так конвейер будем предсказывать, что переход всегда происходит. То, что мы один раз в конце цикла ошибемся, - не беда, зато ценой максимум двух ошибок мы добьемся точного предсказания во всех остальных случаях. Кстати, на простых циклах процессор, как правило, ошибается еще реже - не более одного раза: по умолчанию, когда не из чего выбирать, считается, что условный переход всегда происходит.При неправильном предсказании конвейер обычно приходится "сбрасывать", каким-то образом восстанавливая состояние процессора, предшествующее моменту неправильного перехода. А ведь пока исполнялась неправильная ветка, там ого-го сколько всего могло случиться! Неправильный опкод (нераспознаваемая машинная инструкция), обращение к виртуальной памяти (провоцирующее исключение в процессоре), некстати распознанное деление на ноль (тоже ошибка). Все это приходится тщательно отслеживать конвейер проверять, причем это не шутки: одно время из-за ошибки в реализации конвейера процессора AMD K5, программист, написавший конструкцию если x A 0, то y = 1/x, иначе y = 0, запросто мог получить при x @ 0 на, казалось бы, ровном месте ошибку "деление на ноль", вызванную неправильным предсказанием перехода. А в OoO-процессорах ситуация еще сложнее - пока "тормозит" не вовремя отправившаяся за операндами в оперативную память инструкция, процессор успевает пропустить вперед, выполнить конвейер едва ли не сохранить результат вычисления десятков инструкций неправильной ветки: попробуй за всем этим уследить!Но бороться здесь есть за что: для современных процессоров каждая ошибка предсказания - это десятки вхолостую израсходованных тактов. Сущая катастрофа, если учитывать, что за каждый такт можно было бы исполнить до трех x86-инструкций конвейер совершить кучу вычислений. Если бы блока предсказания не было, то так "тормозил" бы каждый условный переход.Точность предсказания современных блоков составляет на тестах SPEC порядка 98-99%. Может показаться, что совершенствовать блок не имеет смысла, но это не совсем так. Дело в том, что на производительности гораздо больше сказывается процент ошибок, конвейер не верных предсказаний. А переход от 98-процентной точности к 99-процентной означает двукратное снижение ошибок - с 2% до 1%! Поэтому если вы внимательно почитаете пресс-релизы о новых CPU, то заметите, что "усовершенствованный блок предсказания переходов" упоминается в них почти всегда.В архитектуре IA-64 техника предсказания переходов сделала значительный шаг вперед - эти процессоры умеют одновременно вычислять несколько веток программного кода. То есть, встретив инструкцию условного перехода, процессор начинает "охотиться за двумя зайцами" - просчитывать оба варианта развития событий вплоть до того момента, пока не станет ясно, какой из них правильный. Поскольку инструкции "разных вариантов" практически не зависят друг от друга, конвейер исполнительные устройства Itanium обычно загружены далеко не полностью, то исполнять побочную ветку нередко удается практически с той же скоростью, что конвейер основную, так что даже при неправильном предсказании условного перехода происходит не остановка процессора на пару десятков тактов, конвейер всего лишь снижение производительности на небольшом участке кода.Шаг 4. Суперскалярные конвейер Out-of-Order-процессорыУ полноценной конвейеризации, более или менее эффективно обходящей перечисленные выше проблемы, есть одно несомненное достоинство: она настолько сложна, что, единожды реализованная, позволяет легко построить на ее основе целый ряд интересных новшеств. Для начала заметим, что коль уж у нас есть очереди готовых к исполнению инструкций конвейер мы знаем взаимозависимости между ними по данным, есть техника переименования регистров, позволяющая разным инструкциям одновременно задействовать одни конвейер те же регистры для разных целей, и, наконец, есть надежно работающая система сброса конвейера, то мы можем:Запускать на исполняющие устройства сразу несколько инструкций (если они не зависят друг от друга конвейер могут быть безболезненно выполнены одновременно).Переупорядочивать независящие друг от друга инструкции так, как сочтем нужным.Процессоры, использующие первую технику, называются суперскалярными. К примеру, сугубо теоретически, по числу исполнительных устройств, Pentium 4 может выполнять семь инструкций за такт, конвейер Athlon 64 - девять. Реальные цифры, конечно, гораздо скромнее конвейер определяются трудностью полноценной загрузки всех исполнительных устройств, однако Pentium 4 все же способен исполнять в устоявшемся режиме две (при некоторых условиях - четыре), конвейер Athlon 64 - три инструкции за такт, одновременно производя две (A64 - три) операции по адресации конвейер выборке данных из оперативной памяти. Может показаться, что реализация суперскалярного процессора очень проста (достаточно со стадии schedule просто распределять инструкции по разным исполнительным устройствам), однако такой лобовой подход обычно упирается в то, что Front-end процессора перестает успевать загружать исполнительные блоки работой. Поэтому на практике хорошо сделанные суперскалярные архитектуры, подобные AMD K7/K8, приходится специально "затачивать" под суперскалярность.Процессоры, использующие вторую технику, называются процессорами с внеочередным исполнением инструкций (Out-of-Order processors, OoO). Техника переупорядочивания инструкций замечательна тем, что резко ослабляет негативные эффекты от медленной оперативной памяти конвейер от наличия зависимых цепочек инструкций. Если, например, инструкция A обратилась к оперативной памяти, конвейер нужных данных в кэше не оказалось или если A занимается ожиданием результатов выполнения какой-то другой инструкции, то OoO-процессор сможет пропустить вперед другие инструкции, не зависящие от результатов выполнения инструкции A. Кроме того, продвинутый планировщик OoO-процессора иногда может использоваться для реализации специфических деталей той или иной архитектуры - например, для спекулятивного исполнения по данным в случае Pentium 4 или одновременного исполнения нескольких веток программного кода в IA-64. Реализация OoO-процессоров не требует специальной оптимизации всего конвейера - это всего лишь усложнение схемы планировщиков, запускающих готовые к исполнению инструкции на исполнительные устройства в другом порядке, нежели они на планировщики поступили, плюс усложнение схем сброса конвейера конвейер сохранения полученных результатов: результат выполнения прошедших вне очереди инструкций все равно должен сохраняться в последовательности, строго соответствующей расположению инструкций в изначальном коде[Это связано с тем, что если случится какая-то ошибка, то результаты выполнения запущенных вперед очереди инструкции придется аннулировать].На сегодняшний день не существует ни одного суперскалярного или OoO CISC-процессора. Дело в том, что поскольку для нормальной реализации навороченных диспетчеров конвейер планировщиков все равно требуется длительная конвейер тщательная подготовка инструкций, причем желательно - до такого простого состояния, чтобы эти функционирующие на огромных частотах модули особенно не "задумывались" над тем, что такая хитрая последовательность байтов означает конвейер куда ее следует направить (проблем у них конвейер без того хватает), то любой исходный машинный код Front-end процессоров превращает перед исполнением в некое внутреннее, упрощенное конвейер "разжеванное", состояние. То есть на этом этапе развития различия между RISC- конвейер CISC-архитектурами почти стираются - просто у RISC’ов декодер, превращающий исходный машинный код в содержимое очередей планировщиков, устроен гораздо проще, чем "расковыривающий" хитро упакованные x86-инструкции CISC-подобный декодер AMD Athlon конвейер Intel Pentium. Так что можно сказать, что фактически все современные x86-процессоры "в глубине души" являются полноценными RISC’ами - ведь исходный x86-код они в любом случае преобразуют на лету во внутреннее RISC-подобное представление. Правда, разной сложностью декодеров дело не ограничивается: все-таки классический RISC-код не только проще преобразовывать, но конвейер результирующий внутренний код из него получается лучше - планировщикам гораздо легче его обрабатывать (в нем меньше зависимостей конвейер операций с оперативной памятью). Вот конвейер появляются в x86 все новые конвейер новые расширенные наборы инструкций (от 3Dnow! до SSE): это всего-навсего "внешняя ширма", упрощающая работу декодерам инструкций конвейер позволяющая им сгенерировать более эффективный внутренний код. Специального блока обработки того же упакованного 128-битного формата SSE нет ни в одном современном процессоре, так что когда в программном коде x86 встречается, скажем, инструкция сложения двух регистров SSE по четыре числа в каждом - декодер банально генерирует код из четырех явно независимых (вот за что боролись!) инструкций сложения, которые планировщику потом будет легко разбросать по исполнительным устройствам. Но какого-либо "специального блока SSE", одновременно выполняющего запрошенные одной инструкцией четыре сложения, ни в Athlon, ни в Pentium 4 нет.Фактически развитие собственно "архитектуры" x86-процессоров долгое время стояло на месте: что древний Pentium Pro, что новейший Pentium M - все они основаны на одной конвейер той же старой-престарой архитектуре P6. Вылизанной, оптимизированной, но старой - ибо повода для ее смены до сих пор просто не было; "внутреннее представление" x86-кода, несмотря на все внесенные в x86 новации, с тех самых древних времен "чистой IA-32" вплоть до появления технологии AMD64 практически не изменялось.К сожалению, нет места для рассказа об архитектуре VLIW. О Cell - ещё одном потенциальном претенденте на замену суперскалярных OoO-процессоров, мы уже рассказывали. Читайте продолжение в четверг: MIPS, Sparc, ARM конвейер PowerPC- Из журнала "Компьютерра" Оцените материал: 1 (плохо) 2 3 4 5 6 7 8 9 10 (хорошо) Обсудить статью в форуме (0)Версия для печати | Послать другу | Написать в редакциюАвтор: Сергей Озеров. Другие статьи автораРубрика: Платформа. Ещё статьи из рубрики Сегодня в номере Sony NWZ-A810 Плеер порадует стильным дизайном, превосходным экраном конвейер высоким качеством звучания даже с комплектными наушниками. Кулеры Noctua Австрийская фирма Noctua известна своими высококлассными решениями в области компьютерного охлаждения. О проекте |Реклама на сайте |Рассылки сайта |Подписка |Контакты |КПК-версия |RSS© ООО "Компьютерра-Онлайн", 1997-2008При цитировании конвейер использовании любых материалов ссылка на порталКомпьютерра онлайн обязательна (для Интернет-изданий - гиперссылка:www.computerra.ru).Редакция сайта: site@computerra.ruТехподдержка сайта: websupport@computerra.ruРедакция журнала: inform@computerra.ruОтдел рекламы: reklama@computerra.ruТелефон: (495) 232-22-61, (495) 232-22-63Работает на «Битрикс: Управление сайтом»Почта защищена сервером СПАМОРЕЗРаскрутка сайта - ТриЛанСайт работает на сервере DEPO ComputersРемонт жестких дисков Сломался жесткий диск конвейер все пропало? Научись ремонтировать его сам! Новый курс . Впервые в России. С 17 сентября! НОВОСТИ Независимые эксперты получат доступ к терминалам для голосования Военных преступников будут искать через Facebook Приближается релиз игры Grand Theft Auto IV Выбросы углекислоты не влияют на климатические изменения Nokia представила три новых мобильника среднего уровня Министерство юстиции США проанализирует рекламную сделку Google конвейер Yahoo nVidia представила новый видеоадаптер GeForce девятой серии Новая версия мобильника iPhone может появиться в начале июня Компания "Тор" представляет новую акустику Defender I-Wave 45 Ларс Ульрих: посмотрим, что можно сделать в интернете Платформа Трёхъядерных AMD Phenom X3 становится больше23 апреля компания AMD представила три новых трёхъядерных процессора Phenom X3 - модели с индексами 8450, 8650 конвейер 8750. Третья пошла! Присматриваемся к DDR3Новый тип памяти существует уже без малого год, если не считать долгую стадию разработки. Возникает закономерный вопрос: не пора ли уже простым смертным переходить на DDR3 конвейер чего это будет стоить? Корпуса конвейер кулеры Дуем на водуМногие пользователи, присматривающиеся сейчас к системам водяного охлаждения, невольно становятся жертвами своего богатого воображения, ярко рисующего картины вселенского потопа в корпусе компьютера, набитого бесценными комплектующими. Кулеры Noctua: свежесть австрийских АльпКакой должна быть комфортная система охлаждения? Очевидно, что она должна быть эффективной, бесшумной, и, по возможности , компактной. Накопители Быстрее всех живыхСергей Вильянов беседует о жёстких дисках, перспективах технологий конвейер винчестерного бизнеса с Николя Фрапара, директором по продажам Hitachi GST в регионе EMEA. Она NAS: проба целого класса устройств на примере Synology Disk Station DS207На современном этапе бурного развития конвейер распространения цифрового медиаконтента проблема хранения данных в локальной сети встаёт всё более остро. Видео JVC Everio GZ-MG130E: карманное видеоНа наших глазах идет процесс становления нового класса гаджетов - "видеомыльниц". Это такие миниатюрные простенькие устройства, гордо именуемые видеокамерами, которые конвейер правда могут снимать видео. Невредные советыВ этой небольшой заметке мы попытаемся ответить на самые важные для непрофессионала вопросы, относящиеся к postproduction на языке профи или к обработке отснятого видео материала на обычном языке. ЯНДЕКС.ДИРЕКТ #yandex_direct table.y5-header {display: none;} #yandex_direct *, #yandex_market *, #yandex_media * {font: Tahoma, Arial, Helvetica; letter-spacing: -0.5pt;} #terralab { font: 10pt Tahoma, Arial, Helvetica; } #terralab h2 { text-transform: uppercase; } #terralab .item { font: 8pt Tahoma, Arial, Helvetica; border-bottom: 2px solid #a5b8cc; margin-bottom: 7px; } СЕГОДНЯ В "КОМПЬЮТЕРРЕ" Земля сисадминов #Сисадмины редко бывают героями книг. Фантастическая повесть Кори Доктороу "Когда сисадмины правили миром", публикацию которой начинает "Компьютерра-Онлайн", - исключение.Прочитать Блог "Компьютерры-Онлайн" #Гаджеты - Сепулька жив! Постинг про советских роботов, до сих пор обитающих в московском Политехническом музее. - Три постинга про Eee PC: о пользе "Эльдорадо", об эргономике конвейер о Mac OS X на Eee PC. - Как обуздать мышь Apple. - Первый взгляд на MIDI-клавиатуру M-Audio Oxygen 61. Музыка - История найденной недавно "первой в мире аудиозаписи", датируемой 1860 годом. - Юрий Ильин рассказывает о программах-автоаккомпаниаторах конвейер автоматических генераторах музыкальных композиций. Программы - Постинг Андрея Письменного о графическом языке Scratch для обучения программированию. - Google App Engine - Печальная история про конкурс Microsoft для студентов-программистов. Apple - Слухи об открытии iTunes Store в России конвейер их разоблачение - Михаил Карпов об RSS-агрегаторе, встроенном в системный почтовик. - Программа для записей OmniOutliner. Создаём динамические плейлисты #Организация "умных" списков песен - целое искусство. Постигший его сможет больше не думать о том, какую музыку слушать дальше, конвейер не класть файлы в портативный плеер вручную.Прочитать Windows 7: первые сведения о новой системе #Разработка Windows Vista затянулась на пять лет, но многие ожидаемые возможности так конвейер не были реализованы. Возможно, обещания будут исполнены хотя бы в следующей версии Windows?Прочитать MacBook Air: второй вдох #Когда ноутбук MacBook Air добрался до России, мы раздобыли экземпляр, чтобы разобраться, почему вокруг него столько споров.Прочитать » Статьи, тестирования, обзоры » Каталог "железа" - Цены » Форум "Терралаба" разделы вентеляционная решетка врач акушер гинеколог поставщик вина мелованный бумага дмитрий шумок этнический психология кулер изготовление пленка выделение кислорода нард online кассовый машина hi-fi корпоративный обслуживание виные холодильник аденома предстательный железа рефконтейнеры рефконтейнеры купить раструб трансперсональный психология эфирный антенна funke электромонтажный стол маска косметический конвейер шнековый фирменный цвет бесплатный нард билет ммдм вино заказ билет russia music awards корпоративный хранилище данный спирли выделение кислорода апгрейд обезьяна штанга насосный купить чейнджер вихревой теплогенераторы педагогика психология белый кофе куллер 478 меховой холодильник помещение шиномонтаж рукавичка доставка инвертор купить 6131 время архангельск зиплок нард короткий архыз сушильный машина frigidaire электрокардиограф бюро похоронный услуга ubiquam управление иваново купить блендер поставщик вина лечение зарубежом стелаж встраиваемый вытяжка автоматический оповещение ppg краска скачать длинный нард инерта краска нард скачать бесплатный профессиональный фарфор цвет камуфлир зал аэробика сервис alfa laval nokia 3230 купить 8800 gold вакансия красноярск бензопила stihl бензопила dolmar inerta краска кайт серфинг мужчина выходной доставка ноутбук кулер 775 холодильный централь восстановление бухучета газонокосилка black decker бюгельные зубной протез герб рф позитивный психология купить блинницу учиться танго зал аэробика купить видеокарту детский гинеколог токовый клещ тонирование стекла клеить нанесение урок охота холодильник дешево рак щитовидный железа доставка хим. реагент организовать рассылка бахила пластиковый пакет metrobond доставка окон генерация кислорода сервис холодильник поставка тройник перех isdn видеоконференция kiev apartaments rent лечение иглоукалыванием утюг крановый тележка решетка дренажный гайковерт электрический ленинградский вокзал билет девелоперская компания асбест хризотиловый kyiv apartaments rent купить архиватор пазл поглощение радиоволна радиодоступ сервис alfa laval крот-95 лакокраска перевод денег регестрация пбоюл ром доставка госпиталь мэш доставка санкт аденома предстательный железа холодильник бош флаг заказ сварочный пост срочный перевод перевод итальянский купить элеваторный узел мытье потолок акриловый вкладыш сенсорный экран устройство полноцвет кружок тестоокруглитель ленточный спецобувь ubiquam время иваново эрозия шейка матка кулер процессорный облицовка электрокамин пвс персонализация карта передвижной сварочный агрегат итальянский вина купить электроэнцефалограф жила кострома концепция совершенствование сбыта kyiv apartments service маска косметический бензопила dolmar компания доминике распыление ароматизатор lucent definity эдас-934 аденома предст.ж-зы ротационный rvg стимулирующий лотерея установка hotbird кулер бесшумный предохранитель пкэ стелажи многотарифные электросчетчик новосельский доломит краска двухкомпонентный урок охота гнб промывка инжектор тестоделитель производственный тара детский мир wow ливнесборные решетка профессиональный фарфор конвейер шнековый 5004.14 (крышка) конвейер