Обновляет двойную атомарную операцию

Я использовал две книги для помощи в этой области - Визуальная Аналитика: Как Мы Создаем то, Что Мы Видим и Глаз и Мозг: Психология Наблюдения . Они оба контакт с нашим визуальным восприятием. Я нашел рекомендации Amazon блестящим путем к короткому пути к 'оригинальной работе' в поле - если эксперты/читатели соглашаются, что это - стоящее чтение, я пойду с ним.

В сводке

1), Где Вы смотрите, Amazon в соответствии с рекомендациями других, и затем инвертируете поиск в Google для наблюдения, какие ссылки конкретная область

2) ежедневное перемещение хороши для ума, если управление хочет кодировать роботы, возможно, это - то, что они получат?

3) я был развитием 'информационная Графика' целую вечность - это покрывает вещи как дизайн карты трубы и хорошего обозначения. Попробуйте infoesthetics блестящий блог-сайт и информационная Графика на Википедию

Финал хотя считанный Edward Tufte.

10
задан Cheok Yan Cheng 18 August 2009 в 09:23
поделиться

3 ответа

Это зависит от оборудования и архитектуры. Для x86 и x86_64 8-байтовые операции записи или чтения гарантированно будут атомарными, если они выровнены. Цитата из официального документа по заказу памяти для архитектуры Intel:

Гарантии по заказу памяти Intel 64 что для каждого из следующих инструкции доступа к памяти, появляется операция составной памяти выполнить как единый доступ к памяти независимо от типа памяти:

  1. Инструкции, которые читают или записывают один байт.

  2. Команды, которые читают или записывают слово (2 байта) с адресом выровнен по 2-байтовой границе.

  3. Инструкции, которые читают или записывают двойное слово (4 байта) с адресом выровнен по 4-байтовой границе.

  4. Инструкции, которые читают или записывают четверное слово (8 байтов) с адресом выровнен по 8-байтовой границе.

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

11
ответ дан 4 December 2019 в 02:50
поделиться

Я бы не подумал, что в любой архитектуре переключение потока / контекста прервало бы обновление регистра на полпути, так что у вас останется, например, обновленные 18 бит из 32 бит, которые он собирался обновить. То же самое для обновления ячейки памяти (при условии, что это базовая единица доступа, 8,16,32,64 бит и т. Д.).

-2
ответ дан 4 December 2019 в 02:50
поделиться

Итак, был дан ответ на этот вопрос? Я запустил простую тестовую программу, изменив двойную:

#include <stdio.h>

int main(int argc, char** argv)
{
    double i = 3.14159265358979323;
    i += 84626.433;
}

Я скомпилировал ее без оптимизаций (gcc -O0), и все операции присваивания выполняются с помощью отдельных инструкций ассемблера, таких как fldl .LC0 и faddp % st,% st (1) . ( i + = 84626.433 , конечно, выполняется две операции, faddp и fstpl ).

Может ли поток действительно прерваться внутри одной инструкции, такой как faddp ?

-2
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: