Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3490548pxj; Tue, 15 Jun 2021 01:59:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhdQegQUUTSKFE2t0SnNzxMi123Tx9jbz+GGwB1VgTnJ93oV23FPLfR61ubfAPHwY4Dy7s X-Received: by 2002:a05:6402:896:: with SMTP id e22mr2899491edy.201.1623747572506; Tue, 15 Jun 2021 01:59:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623747572; cv=none; d=google.com; s=arc-20160816; b=bPLHY9nJbOnMTfPIDWNsQL8dzMB7kFEEdUHQ8DcB4wwJWe7x4WGjHRUlNTOUhGUZhE GnwfRsIMLTf9h8wHKLmkxhsIwFZ3U9PupA8nPjQswwbq//f7BLh7UBqMsLFFsKxAfstf WhvuFoF/2110WD2fLjKCHFS5i/k4EKAtx4uD5UxGKktng1SGe/Dp6ORmQt1Zya9/SThn qwhqoTyd23uWYh8ECYhnI029sTKtmHg1ySY+XYrhe/aJg59NHDnnT0K7I79k9dyL0OSD E2v4Odq9fzt9VH+q817/ZI7AAd1URuRiz+xpy8zZ1uWcCanlX6/FE3Olqx9iBHdvqieA p2/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:accept-language:in-reply-to:references:message-id:date :thread-index:thread-topic:subject:cc:to:from; bh=PZi9qKI7qmLIQhpsE8C3fJ9UvlI9b93f8NjiK0IvuOc=; b=SpnO13XcihS5mazKWRjCPfyKnrRKD7yuowpbFtO8n2azif4JMIXbFg/iUDlwrNcRyR cu9U/hDI6pchvNBNac3IQT01j/yOiaK8IdhEqunWUlfjZVATuWHMTnrtxeeygT6uCg1s jpDqjBhTOPPRRVlSSTHm8UkPSuZE9MuvEV3jjvLhPHDmzUkYV8oYcFEKcBktgVWhjM9S T90Sw5CXieAmUlh2Lgsv1++/rrc+gAb2qoM/mmNnIhYUACOTaRPDK4vTj21gAhpVxayi IFGHTnHMhxXNwcOOdd9v/cjLJmL3BUVZreUzjwPtgfVzWELtES01OVbHU4YH+5n2AJQ8 6F/Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z19si14900048edq.486.2021.06.15.01.59.09; Tue, 15 Jun 2021 01:59:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231238AbhFOI7Q convert rfc822-to-8bit (ORCPT + 99 others); Tue, 15 Jun 2021 04:59:16 -0400 Received: from eu-smtp-delivery-151.mimecast.com ([185.58.85.151]:22845 "EHLO eu-smtp-delivery-151.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230519AbhFOI7P (ORCPT ); Tue, 15 Jun 2021 04:59:15 -0400 Received: from AcuMS.aculab.com (156.67.243.121 [156.67.243.121]) (Using TLS) by relay.mimecast.com with ESMTP id uk-mta-68-ED9ugU7XN0-kOTjofplO1Q-1; Tue, 15 Jun 2021 09:57:08 +0100 X-MC-Unique: ED9ugU7XN0-kOTjofplO1Q-1 Received: from AcuMS.Aculab.com (10.202.163.6) by AcuMS.aculab.com (10.202.163.6) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Tue, 15 Jun 2021 09:57:07 +0100 Received: from AcuMS.Aculab.com ([fe80::994c:f5c2:35d6:9b65]) by AcuMS.aculab.com ([fe80::994c:f5c2:35d6:9b65%12]) with mapi id 15.00.1497.018; Tue, 15 Jun 2021 09:57:07 +0100 From: David Laight To: 'Matteo Croce' , "linux-riscv@lists.infradead.org" CC: "linux-kernel@vger.kernel.org" , "linux-arch@vger.kernel.org" , Paul Walmsley , Palmer Dabbelt , Albert Ou , Atish Patra , "Emil Renner Berthing" , Akira Tsukamoto , Drew Fustini , Bin Meng Subject: RE: [PATCH 1/3] riscv: optimized memcpy Thread-Topic: [PATCH 1/3] riscv: optimized memcpy Thread-Index: AQHXYY/3XkdMIImxVUmoQbZ37iIZIqsUw3ig Date: Tue, 15 Jun 2021 08:57:07 +0000 Message-ID: <6cff2a895db94e6fadd4ddffb8906a73@AcuMS.aculab.com> References: <20210615023812.50885-1-mcroce@linux.microsoft.com> <20210615023812.50885-2-mcroce@linux.microsoft.com> In-Reply-To: <20210615023812.50885-2-mcroce@linux.microsoft.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=C51A453 smtp.mailfrom=david.laight@aculab.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matteo Croce > Sent: 15 June 2021 03:38 > > Write a C version of memcpy() which uses the biggest data size allowed, > without generating unaligned accesses. I'm surprised that the C loop: > + for (; count >= bytes_long; count -= bytes_long) > + *d.ulong++ = *s.ulong++; ends up being faster than the ASM 'read lots' - 'write lots' loop. Especially since there was an earlier patch to convert copy_to/from_user() to use the ASM 'read lots' - 'write lots' loop instead of a tight single register copy loop. I'd also guess that the performance needs to be measured on different classes of riscv cpu. A simple cpu will behave differently to one that can execute multiple instructions per clock. Any form of 'out of order' execution also changes things. The other big change is whether the cpu can to a memory read and write in the same clock. I'd guess that riscv exist with some/all of those features. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)