LINUX.ORG.RU

Sun's processor news


0

0

Уважаемые коллеги!

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

1. Чуть больше года назад, в феврале 2003 года, Sun объявил о своей новой стратегии в области процессорных и серверных разработок: Throughput Computing (обработка больших потоков данных). Одним из ключевых элементов этой стратегии явилась процессорная технология Chip Multithreading, CMT (многопотоковость на кристалле). Тогда же было заявлено, что это станет нашим магистральным направлением развития в области процессорных технологий.

2. В рамках стратегии CMT (Chip Multithreading) в то время уже шли разработки радикально новых процессоров с запланированным скачком производительности в 15-30 раз по сравнению с существующими процессорами. Эти проекты носят названия Niagara (процессор для работы с сетевыми потоками, 8 ядер, 32 потока) и Rock (процессор для обработки данных, 30-кратный рост производительности по сравнению с UltraSPARC-III).

3. Как любая компания, занимающаяся исследованиями и разработками, Sun ведет несколько параллельных проектов (в области процессорных технологий их было 12). В частности, шла работа над проектом Millenium, который считался "будущим UltraSPARC V" и проектом Gemini (2 двухпотоковых ядра, основанных на ядре UltraSPARC-II). Эти проекты в настоящее время доведены до стадии "taped out", то есть разработка и верификация завершены, проекты готовы к передаче в производство.

4. Принимая во внимание значительное продвижение в проектах Rock и Niagara и желая сконцентрировать ресурсы на наиболее перспективных направлениях, руководство компании приняло решение в разработке будущих систем использовать именно эти процессоры с технологией CMT и с радикальным скачком производительности. Наработки, сделанные в проектах Millenium и Gemini, будут использованы в новых процессорах, инженеры, работавшие в этих проектах, будут переведены в группы Niagara и Rock.

5. Новые процессоры, как и все предыдущие, будут использовать архитектуру SPARC и будут полностью бинарно совместимы со всеми предыдущими процессорами.

6. Выпуск процессоров проекта Niagara запланирован на начало 2006 года, процессоров проекта Rock - 2006-2007 год. До этого времени планируется выпустить несколько обновлений семейства UltraSPARC IV, которые поднимут производительность существующих систем Sun Fire еще в два раза (4-х кратный рост по сравнению с UltraSPARC III).

Более подробно, из первых рук, о нашей процессорной стратегии можно узнать из интервью Дэвида Йена (David Yen), опубликованного в Infoworld:

>>> Подробности

anonymous

Проверено: maxcom

Ответ на: комментарий от anonymous

> 95% считающих, что они знают язык С или C++ я хотел бы попросить этими языками больше никогда не пользоваться. при этом они вполне могут продолжать считать, что они их знают, но уже без вреда для окружающих.

Уел. Справедливо.

Но с другой стороны можно пользоваться тем подмножеством языка, в котором уверен. Ведь пользоваться и по пьяни орать - это разные вещи. При "пользовании" сомнительные места обходятся за километр.

anonymous
()
Ответ на: комментарий от anonymous

> опечаточка вышла. я имел в виду вызов

Это фигня, по сравнению с моими ляпами.

> вместо rand() можете подставить любую функцию с побочным эффектом

Еще раз. Попробуйте использовать функции с побочным эффектом в макросах lisp (или плохих реализациях scheme).

anonymous
()
Ответ на: комментарий от anonymous

Хороший макрос на этом месте не сделать. Либо нужно передавать тип данных параметром макроса - тогда можно сделать блочок, завести локальную переменную, запихать в нее x и вернуть квадрат. Другого способа, сорри, не вижу.

svu ★★★★★
()
Ответ на: комментарий от svu

Я про отвергаемый inline :(

Хотя да - потребуют один макрос и для int и для float.

Ну что ж - есть и m4, и gpp.

anonymous
()
Ответ на: комментарий от anonymous

>: идти повторять{ шаг препятствие? тогда обойти далее цель-достигнута? }достаточно ;

ok я давно на него смотрел в последний раз. но все-таки форт не распостранен как язык общего назначения, ничего личного, просто статистика

skywalker
()
Ответ на: комментарий от anonymous

>а давайте Вы мне для начала изобразите макрос возведения в квадрат (sqr(x) -> x^2) на С.

Вам уже ответили если Вы сами не в состоянии это сделать

только к чему это сказано - я не говорил что макросы это хорошо

skywalker
()
Ответ на: комментарий от anonymous

>95% считающих, что они знают язык С или C++ я хотел бы попросить этими языками больше никогда не пользоваться.

желание нехилое и не совсем достижимое

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

спасибо за разрешение

skywalker
()
Ответ на: комментарий от svu

> Либо нужно передавать тип данных параметром макроса

вроде уже давно были пожелания добавить typeof() в Си++..

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

>Я про отвергаемый inline :( >Хотя да - потребуют один макрос и для int и для float.

А чем плох например:

template <class T> inline T sqrt(const T& x) { return x*x; }

skywalker
()
Ответ на: комментарий от skywalker

>>а давайте Вы мне для начала изобразите макрос возведения в квадрат (sqr(x) -> x^2) на С.

> Вам уже ответили если Вы сами не в состоянии это сделать

покажите мне, пожалуйста, где написан макрос возведения в квадрат вида sqr(x) -> x^2 на С.

anonymous
()
Ответ на: комментарий от anonymous

>покажите мне, пожалуйста, где написан макрос возведения в квадрат вида sqr(x) -> x^2 на С.

#define sqr(x) ((x)*(x))

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

я непонимаю зачем вы _мне_ рассказываете про макросы. макросы это плохо, это _вы_ мне их посоветовали в липсе использовать если вы тот anonymous

skywalker
()
Ответ на: комментарий от skywalker

>template <class T> inline T sqrt(const T& x) { return x*x; }

на всякий случай я знаю что это не макрос, а то забьют

я про int и float

skywalker
()
Ответ на: комментарий от skywalker

>>покажите мне, пожалуйста, где написан макрос возведения в квадрат вида sqr(x) -> x^2 на С.

>#define sqr(x) ((x)*(x))

>да он будет хреново работать если подсунуть туда выражение с сайдэффектом, но тот кто его использует наверняка это знает

давайте называть вещи своими именами: приведенный макрос работает не "хреново", он вообще не работает.

> я непонимаю зачем вы _мне_ рассказываете про макросы. макросы это плохо, это _вы_ мне их посоветовали в липсе использовать если вы тот anonymous

по порядку с конца:

1) я -- не тот anonymous;

2) макросы являются одним из мощнейших средств языка лисп, и если бы Вы консультировались со мной, то я бы обязательно посоветовал Вам с ними разобраться;

3) название языка LISP в русской транскрипции пишется как "лисп", а не как "липс";

4) макросы, простите, "это плохо" где? в лиспе? в лиспе с макросами всё хорошо. в языках типа C/C++? вот, выясняем...

5) _Вам_ я это рассказываю потому, что _Вы_ имели неосторожность пренебрежительно отзываться о макросах в лиспе, в частности, и о лиспе вцелом.

anonymous
()
Ответ на: комментарий от sS

>>#define sqr(x) ((x)*(x))

>#define sqr(x) pow(x,2) ???

уже лучше. педагогический эффект налицо.

теперь, я полагаю, можем переходить к реализации префиксной нотации средствами макросов в С/С++? может другими какими средствами этих языков?

anonymous
()
Ответ на: комментарий от anonymous

>1) я -- не тот anonymous;

тяжело с вами anonynousами общаться , вроде как продолжаете свою мысль, ан нет; надеюсь вы не тот анонимус который думал будто что он знает что в липсе нет синтаксиса

>2) макросы являются одним из мощнейших средств языка лисп, и если бы Вы консультировались со мной, то я бы обязательно посоветовал Вам с ними разобраться;

в липсе макросы есть текстуальная подстановка или нечто большее? если да то я не понимаю как простая текстуальная подстановка может быть МОЩНЕЙЩИМ средством языка

>3) название языка LISP в русской транскрипции пишется как "лисп", а не как "липс";

у меня кнопка на клавиатуре под это дело - называется "липс"

>4) макросы, простите, "это плохо" где? в лиспе? в лиспе с макросами всё хорошо. в языках типа C/C++? вот, выясняем...

в C плохо, в C++ аналогично, но в большинстве случаев можно (и нужно) обойтись без них.

skywalker
()
Ответ на: комментарий от anonymous

Не сильно лучше. В первом случае хотя бы тип сохранялся. Во втором почему-то квадратом int-а становится double.

svu ★★★★★
()
Ответ на: комментарий от anonymous

>теперь, я полагаю, можем переходить к реализации префиксной нотации средствами макросов в С/С++? может другими какими средствами этих языков?

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

skywalker
()
Ответ на: комментарий от anonymous

>давайте называть вещи своими именами: приведенный макрос работает не "хреново", он вообще не работает.

почему не работает?

$ cat sqr.cc; g++ -o sqr sqr.cc; ./sqr #include <iostream>

#define sqr(x) ((x)*(x))

int main() { std::cout << sqr(2) << std::endl; }

4

skywalker
()
Ответ на: комментарий от svu

>Не сильно лучше. В первом случае хотя бы тип сохранялся. Во втором почему-то квадратом int-а становится double.

Ну можно сделать макрос с 2-мя параметрами

#define sqr(x,t) (t)(pow((double)(x),2))

только от этого еще больше гемороя ... историю с max() в ядре еще не забыли ?

sS ★★★★★
()
Ответ на: комментарий от sS

>>уже лучше. педагогический эффект налицо.

>Лучше чем ЧТО тов педагог ? ;)

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

но и Ваш вариант, к сожалению, не является корректным. т.к. результат Вашего sqr() всегда будет иметь тип double в независимости от типа аргумента.

я задам вопрос для этого частного случая иначе: возможна ли в принципе корректная реализация макроса sqr(x) -> x^2 в C/C++? если да, приведите пример.

ну и вопрос в общем виде: может ли кто-нибудь сформулировать границы применимости макросов в С/C++?

anonymous
()
Ответ на: комментарий от anonymous

>но и Ваш вариант, к сожалению, не является корректным. т.к. результат Вашего sqr() всегда будет иметь тип double в независимости от типа аргумента.

Мы все с нетерпением ждем от Вас _правильного_ варианта уважаемый товарисч педагог ;)

sS ★★★★★
()
Ответ на: комментарий от anonymous

>> а вот камрад vsl говорил про продолжение идей форта.Типа там покруче. joy что ли...

не понял, поподробнее если можно

HellAngel ★★
()
Ответ на: комментарий от sS

И все бы хорошо, но если x типа long long и достаточно большой - Вы в результирующем выражении можете потерять младшие знаки :Р

И геморроя, действительно, больше.

Короче, сишный препроц действительно гадкий и тухлый. Я вообще не понимаю, о чем мы тут спорим. Им затыкали дыры в языке (которые сегодня уже почти заткнуты в С99). Вообще, окромя ifdef и include, пользы в нем на сегодня никакой - один вред и развращение умов:)

svu ★★★★★
()
Ответ на: комментарий от sS

> Мы все с нетерпением ждем от Вас _правильного_ варианта уважаемый товарисч педагог ;)

правильный ответ содержится в вопросе: "возможна ли в принципе корректная реализация макроса sqr(x) -> x^2 в C/C++?"

anonymous
()
Ответ на: комментарий от sS

>sqr(x++) дальше продолжать ?

так хочется толочь ступу в воде? про сайдэффекты я уже писал

мне сказали что это _вообще_ не работает, что есть ложь

skywalker
()
Ответ на: комментарий от svu

> Короче, сишный препроц действительно гадкий и тухлый.
> Я вообще не понимаю, о чем мы тут спорим

безусловно

> Вообще, окромя ifdef и include, пользы в нем на сегодня никакой

Без средств метапрограммирования далеко не удешь. Шаблонов в Си99 нет.

dilmah ★★★★★
()
Ответ на: комментарий от svu

>И все бы хорошо, но если x типа long long и достаточно большой - Вы в результирующем выражении можете потерять младшие знаки :Р

А как же иначе ;) Вы от препроцессора желаете невозможного

препроцессор это часть C именно как _препроцессор_ (средство работы с _текстом_) а пытаться использовать его в другом качестве (к примеру как расширитель синтаксиса) нужно с бо-о-о-льшой оглядкой ...

sS ★★★★★
()

sqr можно просто реализовать, если немного воспользоватся расширениями gcc-шными

Что-нить вроде:

#define sqr(x) ({typeof(x) r = (x); r*=r; })

int main() { int x = 2; printf("%d %d\n", sqr(x++), sqr(x++)); }

Т.е. если немного расширить стандарт C/C++ - то можно и такое будет сделать :)

quarck
()
Ответ на: комментарий от quarck

Cоббсно, что-то такое (создание внутренней переменной) я и имел в виду изначально. Но я не справился выразить это стандартным препроцом. Спасибо за идею.

svu ★★★★★
()
Ответ на: комментарий от quarck

Сначала я подумал, что это расширения только препроцессора. Но потом конструкция "({" меня заинтересовала - и я понял, что дело еще и в компиляторе. На самом деле, давно о таком мечтал. И если бы это было в стандарте - было бы круто. Спасибо за hint.

svu ★★★★★
()
Ответ на: комментарий от anonymous

Свой лисп можете себе засунуть знаете куда?
Очень мля удобный язык такой! Скобочный. А уж названия функций и макросов чё стоят!! terpri - этож бля додуматься надо чтобы назвать так функцию печати. Или вот например mapcar, cons, aref как увижу сразу понятно для чего служат и что делают.
Читал что какой-то перец придумал язык с синтаксисом из табуляторов и пробелов. Советую подучить!

Что то я не видел удачных коммерческих проектов реализованых в лиспе это раз (Автокад будем считать исключением из правил. Куда-ж без них). Два - посмотрим по другому - кому нужен лисп кроме гиков? Короче мэйд бай гикс фор гикс.
Щли бы лучше на пиво и к девчёнкам чем лисп задрачивать.

З.Ы. Сотрудники ЦРУ выкрали у Аль-Каиды кусок кода секретной программы написанной в лиспе. Это было 30 мегабайт правых скобок. :)

linux_newbe
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.