Как работает двигатель v8 девушки

Как работает двигатель v8 девушки

Как работает двигатель V8

Логическим местом для начала при описании двигателя V-8 является коленчатый вал. Коленчатый вал – это всего лишь кривошип, расположенный вдоль вала. На самом деле это набор шатунов, по одному на каждый цилиндр в двигателе V-8. Коленчатый вал двигателя работает очень похоже на коленчатые валы, которые прикреплены к педалям на велосипеде. В велосипеде только две рукоятки, а в двигателе V-8 их восемь.

Поршни

В двигателе V-8 каждый кривошип прикреплен к так называемому штоку поршня. Поршневой шток аналогичен ногам водителя на велосипеде. Каждый шток поршня по очереди нажимает на кривошип и заставляет коленчатый вал вращаться. Но поршневой шток не может сделать эту работу сам по себе. Есть ряд других важных частей, и одна из них – поршень. Поршень – это своего рода часть в форме суповой банки, которая вписывается в цилиндр двигателя. (Металл, образующий поршень, безусловно, намного толще и прочнее, чем суповая банка. Только то, что банка представляет собой достаточно хорошее сравнение по размеру и форме поршня.)

горение

Еще раз, сам поршень не делает эту работу в одиночку. Сила, которая направляет поршень вниз для поворота коленчатого вала, должна исходить откуда-то. Это происходит в форме воспламенения и взрыва топливно-воздушной смеси над поршнем в камере сгорания. Другие ключевые части, которые делают все это, включают клапаны и свечу зажигания. Свеча зажигания предназначена для обеспечения искры, которая вызывает воспламенение и взрыв.

Цилиндры

Блок двигателя является важной частью двигателя V-8. Это основная структура, вокруг которой и в которую встроены все остальные необходимые детали двигателя. Одной из важнейших частей двигателя является цилиндр двигателя. Цилиндры двигателя V-8 имеют полые цилиндрические образования внутри блока двигателя. Они расположены в виде двух комплектов по четыре в V-образной формации внутри блока двигателя. Их функция состоит в том, чтобы разместить поршень и обеспечить плотно прилегающее пространство для поршня, чтобы перемещаться вверх и вниз при формировании уплотнения. В верхней части цилиндра находится головка цилиндра. В то время как сам цилиндр образует уплотнение вокруг поршня, работа головки цилиндра состоит в том, чтобы образовать уплотнение в верхней части хода поршня. Это уплотнение важно, потому что должен быть ограниченный взрыв над поршнем внутри цилиндра, чтобы принудительно опустить поршень и повернуть коленчатый вал.

Клапаны

Другие задачи выполняются во время работы двигателя V-8. Важными среди них являются открытие и закрытие клапанов. В двигателе V-8 имеются два вида клапанов: впускные и выпускные. Впускной клапан назван для функции, которую он обеспечивает, которая заключается в приеме смеси воздуха и топлива в камеру сгорания. Выпускной клапан назван так потому, что его функция заключается в открытии и выпуске сгоревшего выхлопа после воспламенения топливно-воздушной смеси. Когда двигатель работает, происходит скоординированная последовательность действий с участием поршней, клапанов и свечей зажигания.

Впускной ход

Двигатель V-8 основан на повторении четырех циклов или ударов, как их часто называют. Во время такта впуска поршень движется вниз. На этом этапе впускные клапаны открыты, и всасывание, вызванное движением поршней, втягивает топливно-воздушную смесь в цилиндры. Впускные клапаны затем закройте. (Между тем выпускные клапаны уже закрыты.)

Удар компрессии

Затем, когда все клапаны закрыты, поршни перемещаются вверх в цилиндрах. Когда они это делают, они сжимают топливно-воздушную смесь, и когда они достигают вершины своего путешествия, смесь получается при максимальном сжатии. Это такт сжатия. В это время свечи зажигания загораются и воспламеняют топливно-воздушную смесь. Воспламенение топливовоздушной смеси в камерах сгорания цилиндра вызывает взрывы, которые толкают поршни вниз. Это рабочий ход, который вращает коленчатый вал.

Удар выхлопных газов

Последний ход – такт выпуска – это ход поршней, снова движущихся вверх после рабочего хода. Во время этого хода выпускные клапаны открыты, и, когда поршни движутся вверх, они выпускают сгоревшие выхлопные газы через выпускные клапаны и далее через систему выпуска.

Как работает JavaScript: под капотом движка V8

Сегодня мы заглянем под капот движка JavaScript V8 и выясним, как именно выполняется JavaScript.

Задний план

Веб-стандарты — это набор правил, которые реализует браузер. Они определяют и описывают аспекты Всемирной паутины.

W3C — это международное сообщество, которое разрабатывает открытые стандарты для Интернета. Они следят за тем, чтобы все следовали одним и тем же принципам и не поддерживали десятки совершенно разных сред.

Современный браузер — это довольно сложная программа с кодовой базой, состоящей из десятков миллионов строк кода. Таким образом, он разделен на множество модулей, отвечающих за разную логику.

Двумя наиболее важными частями браузера являются движок JavaScript и движок рендеринга.

Blink — это движок рендеринга, который отвечает за весь конвейер рендеринга, включая деревья DOM, стили, события и интеграцию V8. Он анализирует дерево DOM, определяет стили и определяет визуальную геометрию всех элементов.

Непрерывно отслеживая динамические изменения с помощью кадров анимации, Blink раскрашивает контент на вашем экране. Движок JS — большая часть браузера, но мы еще не вдавались в подробности.

Движок JavaScript 101

Механизм JavaScript выполняет и компилирует JavaScript в собственный машинный код. Каждый крупный браузер разработал свой собственный JS-движок: Google Chrome использует V8, Safari использует JavaScriptCore, а Firefox использует SpiderMonkey.

В частности, мы будем работать с V8, поскольку он используется в Node.js и Electron, но другие движки построены таким же образом.

Каждый шаг будет содержать ссылку на код, отвечающий за него, чтобы вы могли ознакомиться с кодовой базой и продолжить исследование после этой статьи.

Мы будем работать с зеркалом V8 на GitHub, поскольку оно предоставляет удобный и хорошо известный пользовательский интерфейс для навигации по кодовой базе.

Подготовка исходного кода

Первое, что нужно сделать V8, — это загрузить исходный код. Это можно сделать через сеть, кэш или сервис-воркеры.

Как только код получен, нам нужно изменить его так, чтобы компилятор мог его понять. Этот процесс называется парсингом и состоит из двух частей: сканера и самого парсера.

Сканер берет файл JS и преобразует его в список известных токенов. Список всех токенов JS находится в файле keywords.txt.

Анализатор поднимает его вверх и создает абстрактное синтаксическое дерево (AST): древовидное представление исходного кода. Каждый узел дерева обозначает конструкцию, встречающуюся в коде.

Давайте посмотрим на простой пример:

Этот код создаст следующую древовидную структуру:

Пример дерева AST

Вы можете выполнить этот код, выполнив обход предварительного заказа (корень, влево, вправо):

  1. Определите функцию foo .
  2. Объявите переменную bar .
  3. Назначьте 1 в bar .
  4. Верните bar из функции.

Вы также увидите VariableProxy — элемент, который связывает абстрактную переменную с местом в памяти. Процесс разрешения VariableProxy называется анализом объема.

В нашем примере результат процесса VariableProxy будет указывать на одну и ту же переменную bar .

Парадигма Just-in-Time (JIT)

Обычно для выполнения кода язык программирования необходимо преобразовать в машинный код. Есть несколько подходов к тому, как и когда может произойти это преобразование.

Наиболее распространенный способ преобразования кода — выполнение предварительной компиляции. Это работает именно так, как звучит: код преобразуется в машинный код перед выполнением вашей программы на этапе компиляции.

Этот подход используется многими языками программирования, такими как C ++, Java и другими.

С другой стороны таблицы у нас есть интерпретация: каждая строка кода будет выполняться во время выполнения. Этот подход обычно используется в языках с динамической типизацией, таких как JavaScript и Python, поскольку невозможно узнать точный тип до выполнения.

Поскольку предварительная компиляция позволяет оценить весь код вместе, она может обеспечить лучшую оптимизацию и в конечном итоге произвести более производительный код. С другой стороны, интерпретацию проще реализовать, но обычно она медленнее, чем скомпилированный вариант.

Чтобы преобразовать код для динамических языков быстрее и эффективнее, был создан новый подход, названный компиляцией Just-in-Time (JIT). Он сочетает в себе лучшее из интерпретации и компиляции.

Используя интерпретацию как базовый метод, V8 может обнаруживать функции, которые используются чаще, чем другие, и компилировать их, используя информацию о типе из предыдущих выполнений.

Однако есть вероятность, что тип может измениться. Вместо этого нам нужно деоптимизировать скомпилированный код и вернуться к интерпретации (после этого мы можем перекомпилировать функцию после получения обратной связи нового типа).

Давайте рассмотрим каждую часть JIT-компиляции более подробно.

Переводчик

V8 использует интерпретатор под названием Ignition. Первоначально он берет абстрактное синтаксическое дерево и генерирует байтовый код.

Инструкции байтового кода также имеют метаданные, такие как позиции исходной строки для будущей отладки. Как правило, инструкции байтового кода соответствуют абстракциям JS.

Теперь возьмем наш пример и сгенерируем для него байт-код вручную:

В Ignition есть так называемый аккумулятор — место, где вы можете хранить / читать значения.

Аккумулятор избавляет от необходимости толкать и выдвигать верхнюю часть стопки. Это также неявный аргумент для многих байт-кодов и обычно содержит результат операции. Return неявно возвращает аккумулятор.

Вы можете проверить весь доступный байтовый код в соответствующем исходном коде. Если вам интересно, как другие концепции JS (например, циклы async / await) представлены в байтовом коде, я считаю полезным прочитать эти ожидания тестирования.

Исполнение

После генерации Ignition интерпретирует инструкции, используя таблицу обработчиков, привязанных к байтовому коду. Для каждого байтового кода Ignition может искать соответствующие функции-обработчики и выполнять их с предоставленными аргументами.

Как мы упоминали ранее, этап выполнения также обеспечивает обратную связь типа о коде. Разберемся, как его собирают и управляют.

Во-первых, мы должны обсудить, как объекты JavaScript могут быть представлены в памяти. При наивном подходе мы можем создать словарь для каждого объекта и связать его с памятью.

Первый подход к хранению объекта

Однако обычно у нас много объектов с одинаковой структурой, поэтому было бы неэффективно хранить много дублированных словарей.

Чтобы решить эту проблему, V8 отделяет структуру объекта от самих значений с помощью форм объекта (или внутренних карт) и вектора значений в памяти.

Например, мы создаем литерал объекта:

В первой строке он создаст фигуру Map[c] , имеющую свойство x со смещением 0.

Во второй строке V8 повторно использует ту же форму для новой переменной.

После третьей строки он создаст новую форму Map[c1] для свойства y со смещением 1 и создаст ссылку на предыдущую форму Map[c] .

Пример формы объекта

В приведенном выше примере вы можете видеть, что каждый объект может иметь ссылку на форму объекта, где для каждого имени свойства V8 может найти смещение для значения в памяти.

Формы объектов — это, по сути, связанные списки. Итак, если вы напишете c.x , V8 перейдет к началу списка, найдет там y , перейдет к связанной фигуре и, наконец, получит x и прочитает смещение от нее. Затем он перейдет к вектору памяти и вернет из него первый элемент.

Как вы понимаете, в большом веб-приложении вы увидите огромное количество связанных фигур. В то же время для поиска в связанном списке требуется линейное время, что делает поиск свойств действительно дорогостоящей операцией.

Чтобы решить эту проблему в V8, вы можете использовать встроенный кэш (IC). Он запоминает информацию о том, где найти свойства объектов, чтобы сократить количество поисков.

Вы можете думать об этом как о сайте для прослушивания в вашем коде: он отслеживает все события CALL, STORE и LOAD в функции и записывает все проходящие фигуры.

Структура данных для хранения IC называется вектором обратной связи. Это просто массив для хранения всех микросхем для функции.

Для приведенной выше функции вектор обратной связи будет выглядеть следующим образом:

Это простая функция только с одной ИС, которая имеет тип НАГРУЗКИ и значение UNINIT . Это означает, что он не инициализирован, и мы не знаем, что будет дальше.

Давайте вызовем эту функцию с разными аргументами и посмотрим, как изменится встроенный кэш.

После первого вызова функции load наш встроенный кеш получит обновленное значение:

Это значение теперь становится мономорфным, что означает, что этот кеш может разрешиться только для формы A.

После второго вызова V8 проверит значение IC и увидит, что оно мономорфно и имеет ту же форму, что и переменная fast . Таким образом, он быстро вернет смещение и разрешит его.

В третий раз форма отличается от сохраненной. Таким образом, V8 вручную разрешит это и обновит значение до полиморфного состояния с помощью массива из двух возможных форм.

Теперь каждый раз, когда мы вызываем эту функцию, V8 ​​необходимо проверять не только одну форму, но и перебирать несколько вариантов.

Для более быстрого кода вы можете инициализировать объекты одним и тем же типом и не слишком сильно менять их структуру.

Примечание. Вы можете помнить об этом, но не делайте этого, если это приведет к дублированию кода или к менее выразительному коду.

Встроенные кеши также отслеживают, как часто они вызываются, чтобы решить, подходит ли он для оптимизации компилятора — Turbofan.

Компилятор

Зажигание только доходит до нас. Если функция становится достаточно горячей, она будет оптимизирована в компиляторе Turbofan, чтобы сделать ее быстрее.

Турбовентилятор берет байтовый код из Ignition и набирает обратную связь (вектор обратной связи) для функции, применяет набор сокращений на его основе и создает машинный код.

Как мы видели ранее, обратная связь типа не гарантирует, что она не изменится в будущем.

Например, оптимизированный код Turbofan основан на предположении, что некоторое дополнение всегда добавляет целые числа.

Но что было бы, если бы он получил строку? Этот процесс называется деоптимизацией. Мы выбрасываем оптимизированный код, возвращаемся к интерпретируемому коду, возобновляем выполнение и обновляем информацию о типе.

Резюме

В этой статье мы обсудили реализацию JS-движка и точные этапы выполнения JavaScript.

10 лучших двигателей V8 всех времен

10 лучших двигателей V8 всех времен

Что это за одержимость к V8 двигателям? Линейный 6 цилиндровый и V12 более плавные, четырехцилиндровые двигатели предлагают лучшую экономичность, а встроенный-пять или V10 могут звучать превосходно. Возможно, он предпринял несколько фальшивых стартов, но к 1915 году Cadillac начал массовое производство своего первого V8, 5,4-литрового 70-сильного агрегата, который мог бы управлять его ранними автомобилями до впечатляющих 100 км в час. Oldsmobile, Chevrolet и Ford вскоре последовали этому примеру, и к концу 30-х годов эта конфигурация двигателя действительно снялась. Часть их апелляции заключалась в том, что основная компоновка позволила обеспечить большую гибкость.

Инженеры могли бы пойти с помощью плоской кривошипы для большей мощности или кривошипа поперечной плоскости для дополнительного крутящего момента. Компактная компоновка V означала, что она могла просто вписаться в пространство четырехцилиндрового моторного отсека и была короче шести или 12-цилиндровых конструкций. Большинство V8 были приспособлены к более привлекательным автомобилям, но плоская головка V8 от Henry Ford стала одной из первых, кто был приспособлен к более доступным автомобилям. Технология двигателей сильно изменилась, так как те ранние дни и сегодняшние V8 имеют верхние распределительные валы, прямой впрыск, регулируемое управление клапанами, турбокомпрессоры, а в некоторых случаях даже электрическую помощь.

Ford Flathead

Ну давайте начнем с этой плоской головки V8, которую Генри Форд представил миру в 1932 году. Его передовая конструкция коленчатого вала, смазка маслом высокого давления и цельный блок были довольно революционными на тот момент. Низкая ценовая точка была дополнительной карточкой для вытягивания, а вариации этого двигателя приводили в движение бесчисленные Форды в 50-е годы. Горячие родословные также любили Flathead V8, так как это могло быть запущено на ограниченном бюджете, и оно доминировало в модифицирующей сцене, пока не начали появляться более эффективные OHV V8.


Rover V8

V8, возможно, был изобретен французом и использовался в Rolls-Royce до того, как американские предприниматели объединились, но как только они это сделали, они сделали это самостоятельно. Пример этого можно найти в Rover V8, самом британском из всех V8. Он был построен в Великобритании с 1960 года вплоть до 2006 года и нашел свой путь во всем: от TVR до Land Rover и даже с ограниченным производством Morgans. Большинство людей не знают, что дизайн начал работать как Buick 215. Он был полностью алюминиевым блоком и был также приспособлен к Oldsmobile Jetfire, первому двигателю с турбонаддувом в мире.


Chevy Small-Block

Небольшой блок Chevrolet Chevrolet V8 начал жить в 1955 году, приспосабливаясь к корветам первого поколения. Он был наполнен множеством других моделей объемом от 4,3 до 6,6 литра. Дизайн небольшого блока продолжался до 2003 года с небольшим блоком Gen II, который прибыл в 1992 году. Эти универсальные двигатели могли производить до 390 л.с. в стандартной форме, и они по-прежнему доступны для заказа как «двигатели ящиков» и являются фаворитом среди тюнеров, которые выглядят для надежной мощности. Все новые LS V8 были представлены в 1996 году, и это линейка двигателей, которые поддерживают современные транспортные средства GM. Самые последние модули Gen V имеют непосредственный впрыск, активное управление топливом и даже изменение фаз газораспределения.


Chrysler HEMI

Двигатели Chrysler Hemi стали синонимом мощности и производительности, так как они впервые попали на сцену в 1951 году. Прозвище «Hemi» было получено из-за того, что у этих двигателей были полусферические камеры сгорания. Дизайн не был уникальным для Chrysler и не был непременно лучшим способом извлечь больше энергии из двигателя, но большинство Hemi были двигателями большой мощности, которые делали много энергии. Были некоторые действительно культовые Hemi V8. Первый из них — 426 Hemi, приспособленный к 1970 Plymouth Barracuda, и совсем недавно — 6,7-литровый V8 с наддувом мощностью 707 л.с., установленный на Dodge Charger Hellcat и даже безумный 840-сильный Challenger SRT Demon.


Ferrari F106

Ferrari F106 V8 был впервые использован в неудобно распределенном (и названном) Dino 308 GT4 2 + 2 в 1973 году. Он произвел очень сильную 250 л.с. с 2,9 литра и в отличие от конструкций толкателей наддува, которые доминировали на американской рынке, использовались плоский плоский кривошип и распределительные валы с двумя верхними колесами. Эта компоновка была основой для каждого среднемоторного Ferrari V8 вплоть до 360, который прекратил производство в 2005 году. Он работал в 308, F355 и даже с двухтактным F40. На протяжении многих лет были введены многовалютные головки и электронный впрыск топлива, что позволило увеличить мощность до 400 л.с. в нестроенной форме и 477 л.с. при оснащении турбонаддувом.


Maserati/Ferrari F136

F136 дебютировал в 4,3-литровом F430 мощностью 483 л.с. в 2004 году, он достиг максимума в 458 Speciale, создав массивную 597 лошадиных сил всего 4.5 литра. Модели Maserati Quattroporte и GranTurismo также получили модифицированную кривошипную версию этого двигателя, известную тем, что она когда-либо была одной из самых увлекательных выхлопных выхлопных газов. 454-сильный 4,7-литровый Maserati GranTurismo был, пожалуй, лучшим звучанием. Ferrari 488GTB заменил 458 в 2015 году и принес с собой новый турбонаддув F154 V8, сигнализирующий о конце атмосферного двигателя Ferrari V8.


Audi FSI

На протяжении десятилетий Audi создавала двигатели с турбонаддувом, так что это стало неожиданностью, когда их BMW M3, соперничающий с поколением B7 поколения RS4, оснастили 4-литровым V8 с высоким оборотом 420 л.с. Возможно, было еще более удивительно найти вариант с маслом с сухим маслом в спортивном автомобиле R8 с промежуточным двигателем. Он оказался очень способным силовым агрегатом, впервые оснастившим надувную систему впрыска топлива на серийный автомобиль и способный довести обороты до 8 250 об / мин, а также сделал все необходимые шумы. Естественно наддутый V8 в последний раз использовался в RS4 предыдущего поколения 444 л.с. Audi вернулась к турбонаддуву V8, и последние версии развиваются до 600 л.с.


BMW V8

BMW на протяжении многих десятилетий подгонял V8 к своим роскошным моделям, а два из лучших были 4,6-литровым агрегатом S65 414 л.с. в старом E90 M3 и 4,9-литровым двигателем S62 мощностью 400 л.с., установленным в конце 90-х годов M5. Они обозначили вершину развития без турбо V8 в BMW, но последний 4,4-литровый двухтурбинный S63 — современный шедевр. В стандартной форме он составляет громадный 600 л.с. и обеспечивает новейшее поколение M5 огневой мощи, чтобы взять на себя суперкары. Он мгновенно реагирует на входы дроссельной заслонки и с крутящим моментом 553 Н/м, обеспечивает ускорение в передаче.


Mercedes 6.2-liter

Mercedes также отправился на турбонаддув для своих последних 4.0-литровых V8. Тем не менее, мы все еще любим 6.2-литровый V8 M156, который первоначально приводил в действие 467-сильный C63 AMG. Он показал целый ряд улучшений производительности по сравнению с остальной частью диапазона Mercedes и продолжил свою работу практически во всех модельных AMG-модельх от CL63 AMG вплоть до родстера SL63. Конечная версия этого двигателя была названа M159 и использовалась в суперкаре SLS, производя 622 hp. «V8» от Mercedes «V8» продолжается в автомобилях, таких как AMG GT R Coupe, с его 577-сильным двойным турбо V8.

Читайте также  Какой двигатель на школьном автобусе


McLaren V8

McLaren открыла свои двери в 1963 году, и, хотя она была необычайно успешной в автоспорте, только спустя много времени она переключилась на дорожные автомобили. Меняющийся в игре McLaren F1 впервые появился в 1992 году, но нам пришлось ждать до 2011 года для MP4-12C для своего первого суперкара на V8. И какой автомобиль был. Трехмоторный 3,8-литровый V8 M838T в этой модели произвел 592 л.с. и достиг максимума в 727 л.с. в гибридном гиперкаре P1. Недавно выпущенная 720S — первая новая модель, которая оснащена полностью обновленным движком под кодовым названием M840T, создающим 710 л.с. в этом приложении, и мы ожидаем от него больших чисел в будущих моделях.


Lexus 1UZ-FE

Хотя есть еще много замечательных V8, мы просто не могли не оставить нашего единственного японского участника. 4.0-литровый Lexus 1UZ-FE был представлен в 1989 году с двумя верхними распредвалами и четырьмя клапанами на цилиндр. Это было относительно продвинуто для своего времени, в то время как его высокая плавность и надежность пуленепробиваемости делали его популярным на протяжении многих лет. Для этих автомобилей, таких как роскошный LS400, эти двигатели первоначально производили 256 л.с., но составляли 300 л.с. с добавлением изменяемых фаз газораспределения и других обновлений в более поздних версиях. Подобно малым блочным двигателям Chevy, эти двигатели 1UZ-FE нашли свой путь в огромное количество разнообразных применений от моторных лодок до внедорожных гонщиков.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector