Tag: memory-alignment
Speicher Ausrichtung bedeutet, dass die Objekte und Variablen befinden sich an bestimmten offsets im Arbeitsspeicher des Systems.
4
Antworten
Visual Studio C++ 2008/2010 unterstützen _mm_malloc offiziell? Es ist definiert in malloc.h aber ich kann nicht finden die Beschreibung in der MSDN-Bibliothek. InformationsquelleAutor Kirill V. Lyadvinsky | 2010-07-22
2
Antworten
Es verwendet zu sein, dass ARM-Prozessoren nicht in der Lage waren richtig zu handhaben, unaligned memory access (ARMv5 und unten). So etwas wie u32 var32 = *(u32*)ptr; würde fehlschlagen (raise exception), wenn ptr war nicht korrekt ausgerichtet
2
Antworten
Ich will mein c++ - Programm kompiliert unter GCC zu haben, die maximale Ausrichtung von 4 bytes (der Mitglieder der Strukturen). Ich kann wirklich tun Sie dies durch die Direktive #pragma pack. Jedoch, es ist unangenehm, in
3
Antworten
Ich habe Probleme bei der Angleichung der Speicher für DMA-transfer auf den Cell-Prozessor. Ich brauche die letzten 4 bit der Adresse auf 0 ein. Ich habe 4 arrays von unsigned int wo jedes element muss ausgerichtet im
5
Antworten
Hier ist der code, den ich normalerweise benutze, um ausgerichtet Speicher mit Visual Studio und GCC inline void* aligned_malloc(size_t size, size_t align) { void *result; #ifdef _MSC_VER result = _aligned_malloc(size, align); #else if(posix_memalign(&result, align, size)) result =
3
Antworten
Ich versuche, byte-align-Funktion in 16-byte-Grenze mit dem 'aligned(16)' - Attribut. Ich habe die folgenden: void __attribute__((aligned(16))) function() { } (Quelle: http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html) Aber wenn ich kompilieren (gcc foo.c ; keine makefiles oder linker-Skripte verwendet), bekomme ich die folgende
6
Antworten
Was ist der Unterschied zwischen aligned und unaligned memory access? Ich arbeite auf einen TMS320C64x DSP, und ich will die systeminterne Funktionen (C-Funktionen für die Montage-Anleitung) und es hat ushort & _amem2(void *ptr); ushort & _mem2(void *ptr);
1
Antworten
Während der Arbeit an meinem compiler bekam ich diese Fehlermeldung: Program received signal SIGSEGV, Segmentation fault. __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:33 Wie bekomme ich die details von dem, was hier schief gelaufen? Ich weiß aus dem backtrace es
4
Antworten
Zusammenfassung: Wie erkennt der compiler statisch, bestimmen die Größe einer C++ - Klassen während der Kompilierung? Details: Ich versuche zu verstehen, was die Regeln sind für die Bestimmung, wie viel Speicher eine Klasse verwenden, und auch, wie
2
Antworten
Ich würde gern ein struct hat eine bestimmte Ausrichtung. Ich würde gerne die gleiche struct-definition für beide GCC-und VisualC++ - Compiler. In VisualC++, eine in der Regel wird dies: __declspec(align(32)) struct MyStruct { //... }; In GCC,
2
Antworten
Arbeite ich an einer pet-open-source-Projekt implementiert, dass einige stream-cipher-algorithmen und-ich habe ein Problem mit einem bug ausgelöst, nur wenn ich es auf einem ARM-Prozessor. Ich habe auch versucht, läuft der ARM-binary in x86-unter qemu, aber der Fehler
3
Antworten
Ist es möglich std::vector von benutzerdefinierten Strukturen zuordnen ausgerichtet Speicher für die weitere Verarbeitung mit SIMD-Anweisungen? Wenn es möglich ist, zu tun mit Allocatorhat jemand zufällig eine solche Zuweisung, die er teilen könnte? InformationsquelleAutor der Frage Violet
6
Antworten
Dies ist eine Frage, die angeregt wurde durch Rob Walker's Antwort hier. Nehme an, dass ich deklarieren Sie eine Klasse/Struktur etwa so: struct { char A; int B; char C; int D; }; Ist es sicher anzunehmen,
8
Antworten
Habe ich gelesen, einen Artikel über Lockless-Programmierung in MSDN. Es sagt : Auf allen modernen Prozessoren können Sie davon ausgehen, dass lese-und Schreibvorgänge von natürlich ausgerichtet nativen Typen sind Atomare. Solange der Speicher-bus ist mindestens so breit
3
Antworten
Wie Sie Speicher, die ausgerichtet ist auf eine bestimmte Grenze C (z.B. cache-line-Grenze)? Ich bin auf der Suche nach malloc/free wie die Implementierung, die im Idealfall wäre so portabel wie möglich sein --- zumindest zwischen 32-und 64-bit-Architekturen.
8
Antworten
Zugegeben, ich verstehe es nicht. Sagen, Sie haben einen Speicher mit einer memory-Wort der Länge von 1 byte. Warum kann man nicht den Zugriff auf eine 4 byte lange Variablen in einem einzigen Speicher-Zugriff auf eine nicht
5
Antworten
folgenden ein Auszug aus hier pw = (widget *)malloc(sizeof(widget)); weist raw-Speicherung. In der Tat, der malloc-Aufruf reserviert Speicher das ist groß genug und entsprechend ausgerichtet zu halten, ein Objekt der Typ widget siehe auch fast-pImpl von herb
3
Antworten
Ich arbeite mit shared memory jetzt. Kann ich nicht verstehen alignof und alignas. cppreference ist unklar : alignof gibt "Ausrichtung" aber was ist mit "Ausrichtung" ? Anzahl der bytes, die Sie für den nächsten block ausgerichtet werden
16
Antworten
Was sind einige wirklich gute Gründe zu Graben std::allocator zu Gunsten von eine maßgeschneiderte Lösung? Sind Sie über alle Situationen, wo es absolut notwendig war für die Korrektheit, performance, Skalierbarkeit, etc? Keine wirklich kluge Beispiele? Benutzerdefinierte allocators
6
Antworten
Damit false-sharing, will ich richten Sie jedes element ein array an eine cache-line. Also erstmal muss ich wissen, die Größe einer cache-Zeile, damit ich ordnen Sie jedem element, die Menge der bytes. Zweitens möchte ich den start
10
Antworten
Arbeite ich an der 32-bit-Maschine, also nehme ich an, dass der Speicher Ausrichtung sollte 4 bytes. Sagen, ich habe struct: typedef struct { unsigned short v1; unsigned short v2; unsigned short v3; } myStruct; die wirkliche Größe
4
Antworten
Ich arbeite auf einem einzigen Hersteller einzelne Verbraucher Ringpuffer-implementation.Ich habe zwei Anforderungen: 1) Richten Sie eine einzelne heap zugeordneten Instanz von einem ring-Puffer, um eine cache-Zeile. 2) Richten Sie ein Feld in einem ring-Puffer, um eine cache-line