¿Se desasignan las operaciones de carga del RS cuando se envían, se completan o en otro momento?

4
BeeOnRope 2020-01-25 00:46.

En la moderna Intel 1 x86, ¿se liberan las cargas de la RS (Reservation Station) en el punto en el que envían 2 , o cuando completan 3 , o en algún lugar intermedio 4 ?


1 También estoy interesado en AMD Zen y sus secuelas, así que siéntete libre de incluir eso también, pero para hacer la pregunta manejable, la limito a Intel. Además, AMD parece tener una canalización de carga algo diferente de Intel, lo que puede hacer que investigar esto en AMD sea una tarea separada.

2 Enviar aquí significa dejar el RS para su ejecución.

3 Completo aquí significa cuando los datos de carga regresan y están listos para satisfacer uops dependientes.

4 O incluso en algún lugar fuera del rango de tiempo definido por estos dos eventos, lo que parece improbable pero posible.

2 answers

4
Andreas Abel 2020-01-28 06:38.

Los siguientes experimentos sugieren que los uops se desasignan en algún momento antes de que se complete la carga. Si bien esta no es una respuesta completa a su pregunta, podría proporcionar algunas ideas interesantes.

En Skylake, hay una estación de reserva de 33 entradas para cargas (ver https://stackoverflow.com/a/58575898/10461973). Este también debería ser el caso del Coffee Lake i7-8700K, que se utiliza para los siguientes experimentos.

Suponemos que R14contiene una dirección de memoria válida.

clflush [R14]
clflush [R14+512]
mfence

# start measuring cycles

mov RAX, [R14]
mov RAX, [R14]
...
mov RAX, [R14]

mov RBX, [R14+512]

# stop measuring cycles

mov RAX, [R14]se desenrolla 35 veces. Una carga de la memoria tarda al menos unos 280 ciclos en este sistema. Si las cargas se mantuvieron en la estación de reserva de 33 entradas hasta su finalización, la última carga solo podría comenzar después de más de 280 ciclos y necesitaría otros ~ 280 ciclos. Sin embargo, el tiempo total medido para este experimento es de solo 340 ciclos. Esto indica que los uops de carga abandonan el RS en algún momento antes de su finalización.

Por el contrario, los siguientes experimentos muestran un caso en el que la mayoría de los uops se ven obligados a permanecer en la reserva hasta que se completa la primera carga:

mov RAX, R14
mov [RAX], RAX
clflush [R14]
clflush [R14+512]
mfence

# start measuring cycles

mov RAX, [RAX]
mov RAX, [RAX]
...
mov RAX, [RAX]

mov RBX, [R14+512]

# stop measuring cycles

Las primeras 35 cargas ahora tienen dependencias entre sí. El tiempo medido para este experimento es de aproximadamente 600 ciclos.

Los experimentos se realizaron con todos los núcleos menos uno deshabilitados y con el regulador de la CPU configurado en rendimiento ( cpupower frequency-set --governor performance).

Aquí están los comandos de nanoBench que utilicé:

./nanoBench.sh -unroll 1 -basic -asm_init "clflush [R14]; clflush [R14+512]; mfence" -asm "mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RAX, [R14]; mov RBX, [R14+512]"

./nanoBench.sh -unroll 1 -basic -asm_init "mov RAX, R14; mov [RAX], RAX; clflush [R14]; clflush [R14+512]; mfence" -asm "mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RAX, [RAX]; mov RBX, [R14+512]"

3
bsghost 2020-04-07 04:14.

Acabo de encontrar esta pregunta. Aquí está mi intento de respuesta.

Respuesta corta: Todavía no estoy seguro acerca de algunas partes, pero según algunas mediciones que utilizan varios contadores de rendimiento junto con las interrupciones de supervisión del rendimiento, "parece" que la carga uop se elimina de RS durante el mismo ciclo que se envía a los puertos de carga o al menos muy poco después.

Detalles: Hace un tiempo intenté escribir un módulo de kernel que imita las ideas aquí . La publicación del blog vinculada describe la idea muy bien, por lo que no la explicaré en detalle aquí. La idea principal es activar una interrupción de la supervisión del rendimiento después de que haya transcurrido un número determinado de ciclos, congelar todos los valores del contador (actualmente rastreados), almacenarlos y restablecerlos / repetirlos. Hacer esto durante 1, 2, ... n ciclos nos da una idea de lo que está sucediendo microarquitectónica en la granularidad del ciclo. La precisión de una imagen es una historia diferente ... La fuente del módulo del kernel que usé para medir se puede encontrar aquí .

Respuesta larga: Perfilé el siguiente código a continuación utilizando el módulo del kernel mencionado anteriormente en un i7-1065G7 (Ice Lake) y rastreé 11 contadores de rendimiento diferentes. Antes de la movinstrucción perfilada, clflushse llamó a la dirección almacenada en r8. Esto se hizo para que la carga tomara el tiempo suficiente para que fuera fácil saber si el uop se eliminó de RS antes, después o durante la ejecución (de lo contrario, la carga se completa en aproximadamente 4 ciclos). En total, medí hasta 600 ciclos y la mayoría de los eventos que son de interés en esta pregunta ocurrieron dentro de 65 ciclos. Para tener en cuenta el ruido, hice 1024 intentos para cada ciclo y almacené el valor del contador que más se produjo. Afortunadamente, para cada ciclo en la tabla a continuación y cada contador, solo vi desviaciones en el valor de, como máximo, una única prueba, y las 1023 pruebas restantes dieron los mismos valores de contador.

 563:   0f 30                   wrmsr  
 565:   4d 8b 00                mov    (%r8),%r8
 568:   0f ae f0                mfence 
 56b:   0f ae e8                lfence

Los contadores seguidos se enumeran a continuación. Las descripciones se resumen de Intel SDM.

  INST_RETIRED_ANY_P:          To track when wrmsr retired
  RS_EVENTS_EMPTY_CYCLES:      Count of cycles RS is empty
  UOPS_DISPATCHED_PORT_PORT_0: # uops dispatched to port 0
  UOPS_DISPATCHED_PORT_PORT_1: # uops dispatched to port 1 
  UOPS_DISPATCHED_PORT_2_3:    # uops dispatched to port 2,3 (load addr ports)
  UOPS_DISPATCHED_PORT_4_9:    # uops dispatched to port 4,9 (store data ports)
  UOPS_DISPATCHED_PORT_PORT_5: # uops dispatched to port 5
  UOPS_DISPATCHED_PORT_PORT_6: # uops dispatched to port 6
  UOPS_DISPATCHED_PORT_7_8:    # uops dispatched to port 7,8 (store addr ports)
  UOPS_EXECUTED_THREAD:        # uops executed
  UOPS_ISSUED_ANY:             # uops sent to RS from RAT

La siguiente tabla enumera cada valor de contador en cada ciclo. Entonces, según la tabla siguiente, se envía un uop a RS en el ciclo 47 y ocupa el RS para los ciclos 51-54. Esta es presumiblemente la carga uop. En el ciclo 54 RS_EVENTS_EMPTY_CYCLESe UOPS_DISPATCHED_PORT_2_3incremento, lo que significa (al menos cómo lo estoy interpretando) que la carga uop se ha enviado y se ha liberado del RS.

De lo que no estoy seguro es que en el ciclo 52 se emiten tres uops más al RS. Parecen llegar y ocupar la RS para el ciclo 55-58. Pero solo se envían dos uops a los puertos de ejecución y el RS se vacía. Independientemente del ciclo 59, el RS está vacío (el recuento aumenta en cada ciclo). La carga se completa y se movretira unos 500 ciclos más tarde.

+-------+--------------+-----------------+--------+--------+----------+----------+--------+--------+----------+---------------+-------------------+------------------------+
| Cycle | Inst Retired | Cycles RS Empty | Port 0 | Port 1 | Port 2,3 | Port 4,9 | Port 5 | Port 6 | Port 7,8 | uops executed | uops issued to RS |        Comments        |
+-------+--------------+-----------------+--------+--------+----------+----------+--------+--------+----------+---------------+-------------------+------------------------+
|     1 |            0 |               3 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 0 |                        |
|     2 |            0 |               4 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 0 |                        |
|     3 |            0 |               5 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 0 |                        |
|     4 |            0 |               6 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 | 2 uops issued          |
|     5 |            0 |               7 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|     6 |            0 |               8 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|     7 |            0 |               9 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|     8 |            0 |              10 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|     9 |            0 |              11 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|    10 |            0 |              12 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|    11 |            0 |              12 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|    12 |            0 |              12 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|    13 |            0 |              12 |      0 |      0 |        0 |        0 |      0 |      0 |        0 |             3 |                 2 |                        |
|    14 |            0 |              13 |      0 |      0 |        0 |        0 |      0 |      1 |        0 |             3 |                 2 |                        |
|    15 |            0 |              14 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             3 |                 2 | 2 uops dispatched      |
|    16 |            0 |              15 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             4 |                 2 |                        |
|    17 |            0 |              16 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 2 | 2 uops executedd       |
|    18 |            0 |              17 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 2 |                        |
|    19 |            0 |              18 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 2 |                        |
|    20 |            0 |              19 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 2 |                        |
|    21 |            0 |              20 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 2 |                        |
|    22 |            0 |              21 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 2 |                        |
|    23 |            0 |              22 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 5 |                        |
|    24 |            0 |              23 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 6 | 4 uops issued          |
|    25 |            0 |              24 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 6 |                        |
|    26 |            0 |              25 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 6 |                        |
|    27 |            0 |              25 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 6 |                        |
|    28 |            0 |              25 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 6 |                        |
|    29 |            0 |              25 |      0 |      0 |        0 |        0 |      0 |      2 |        0 |             5 |                 6 |                        |
|    30 |            0 |              25 |      0 |      1 |        0 |        0 |      0 |      2 |        0 |             5 |                 6 |                        |
|    31 |            0 |              26 |      0 |      1 |        0 |        0 |      0 |      3 |        0 |             5 |                 6 |                        |
|    32 |            0 |              27 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             6 |                 6 |                        |
|    33 |            0 |              28 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             7 |                 6 |                        |
|    34 |            0 |              29 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 | 3 uops executed        |
|    35 |            0 |              30 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    36 |            1 |              31 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 | wrmsr retired          |
|    37 |            1 |              32 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    38 |            1 |              33 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    39 |            1 |              34 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    40 |            1 |              35 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    41 |            1 |              36 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    42 |            1 |              37 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    43 |            1 |              38 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    44 |            1 |              39 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    45 |            1 |              40 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    46 |            1 |              41 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    47 |            1 |              42 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 6 |                        |
|    48 |            1 |              43 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 7 | 1 uop issued           |
|    49 |            1 |              44 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 7 |                        |
|    50 |            1 |              45 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 7 |                        |
|    51 |            1 |              46 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                 7 |                        |
|    52 |            1 |              46 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                10 | 3 uops issued          |
|    53 |            1 |              46 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                10 |                        |
|    54 |            1 |              46 |      0 |      1 |        0 |        0 |      0 |      4 |        0 |             8 |                10 | port 2,3 load addr     |
|    55 |            1 |              47 |      0 |      1 |        1 |        0 |      0 |      4 |        0 |             8 |                10 |                        |
|    56 |            1 |              47 |      0 |      1 |        1 |        0 |      0 |      4 |        0 |             8 |                10 | executing load         |
|    57 |            1 |              47 |      0 |      1 |        1 |        0 |      0 |      4 |        0 |             9 |                10 |                        |
|    58 |            1 |              47 |      0 |      1 |        1 |        0 |      0 |      4 |        0 |             9 |                10 | port 4,9 store data    |
|    59 |            1 |              48 |      0 |      1 |        1 |        1 |      0 |      4 |        1 |             9 |                10 | port 7,8 store address |
|    60 |            1 |              49 |      0 |      1 |        1 |        1 |      0 |      4 |        1 |             9 |                10 |                        |
|    61 |            1 |              50 |      0 |      1 |        1 |        1 |      0 |      4 |        1 |            11 |                10 | 2 uops executed        |
|    62 |            1 |              51 |      0 |      1 |        1 |        1 |      0 |      4 |        1 |            11 |                10 |                        |
|    63 |            1 |              52 |      0 |      1 |        1 |        1 |      0 |      4 |        1 |            11 |                10 |                        |
|    64 |            1 |              53 |      0 |      1 |        1 |        1 |      0 |      4 |        1 |            11 |                10 |                        |
|    65 |            1 |              54 |      0 |      1 |        1 |        1 |      0 |      4 |        1 |            11 |                10 |                        |
+-------+--------------+-----------------+--------+--------+----------+----------+--------+--------+----------+---------------+-------------------+------------------------+

Entonces, según la tabla, parece que la carga uop se elimina del RS al mismo tiempo que se envía al puerto de carga o un par de ciclos más tarde. Hice una verificación de cordura de los valores en el gráfico y, en su mayor parte, todos los valores del contador tienen sentido. Dos cosas que no he descubierto es el hecho de que se deben enviar 4 uops a RS (ciclo 24) pero solo se ejecutan 3 (ciclo 35). De manera similar, se emiten 3 uops en el ciclo 52, pero solo se ejecutan 2 (ciclo 61)

Gracias

Related questions

MORE COOL STUFF

Cate Blanchett se acostó con su esposo después de 3 días juntos y sigue casada con él 25 años después

Cate Blanchett se acostó con su esposo después de 3 días juntos y sigue casada con él 25 años después

Cate Blanchett desafió los consejos típicos sobre citas cuando conoció a su esposo.

Por qué Michael Sheen es un actor sin fines de lucro

Por qué Michael Sheen es un actor sin fines de lucro

Michael Sheen es un actor sin fines de lucro, pero ¿qué significa eso exactamente?

¡La estrella de Hallmark, Colin Egglesfield, habla sobre emocionantes encuentros con fans en RomaDrama Live! [Exclusivo]

¡La estrella de Hallmark, Colin Egglesfield, habla sobre emocionantes encuentros con fans en RomaDrama Live! [Exclusivo]

¡La estrella de Hallmark, Colin Egglesfield, habló sobre los emocionantes encuentros con los fanáticos en RomaDrama Live! además de su programa INSPIRE en la convención.

Por qué no puedes transmitir 'Northern Exposure' en línea

Por qué no puedes transmitir 'Northern Exposure' en línea

Tendrás que desempolvar un reproductor de Blu-ray o DVD para ver por qué Northern Exposure se convirtió en uno de los programas más populares de los 90.

Dona tu cabello para ayudar a mantener limpia nuestra agua

Dona tu cabello para ayudar a mantener limpia nuestra agua

Los recortes de cabello de los salones y las donaciones personales se pueden reutilizar como tapetes que absorben los derrames de petróleo y ayudan a proteger el medio ambiente.

Una mirada a las bodas más memorables de la Casa Blanca

Una mirada a las bodas más memorables de la Casa Blanca

Solo unas pocas personas se han casado en la Casa Blanca en los últimos más de 200 años. ¿Quiénes eran y qué se requiere para marcar una boda allí?

¿Cuál es la toronja más dulce: blanca, roja o rosada?

¿Cuál es la toronja más dulce: blanca, roja o rosada?

¿Tu boca se emociona al pensar en comer una toronja jugosa? Bueno, frunce el ceño, porque la toronja está repleta de vitaminas y antioxidantes que tu cuerpo necesita.

¿Cuál es la diferencia entre levaduras secas instantáneas y activas?

¿Cuál es la diferencia entre levaduras secas instantáneas y activas?

La levadura es el componente mágico de la cocción que hace que la masa suba. Pero hay muchos tipos por ahí. ¿Cuál es el adecuado para tu receta?

NetSpot mapea su red Wi-Fi y diagnostica problemas de señal de forma gratuita

NetSpot mapea su red Wi-Fi y diagnostica problemas de señal de forma gratuita

OS X: NetSpot es una utilidad gratuita que facilita el mapeo de su red inalámbrica, realizar un estudio del sitio si tiene una particularmente grande para administrar y visualizar dónde la señal es fuerte y débil, y qué podría estar entrando en el camino. Hemos mencionado NetSpot antes, pero la aplicación ha recorrido un largo camino desde entonces.

Candace Cameron Bure se pelea con una drag queen, y eso es perfecto

Candace Cameron Bure se pelea con una drag queen, y eso es perfecto

Imágenes vía Instagram. Candace Cameron Bure, estrella de Fuller House, hermana de Kirk y ex conservadora rubia simbólica en The View, está actualmente envuelta en una amarga enemistad con la campeona de RuPaul's Drag Race, Bianca Del Rio (también conocida como Roy Haylock cuando se quedó sin drag).

Bueno, las comparaciones de Mike Tyson no estaban del todo mal

Bueno, las comparaciones de Mike Tyson no estaban del todo mal

Sí, eso parece morder. Después de ser nombrado Prospecto del Año 2020 por varias publicaciones, incluidas Sports Illustrated y The Athletic, Edgar Berlanga, de 25 años, fue aclamado como el puertorriqueño Mike Tyson.

Cómo luchar contra Fox News con mercados publicitarios en línea laberínticos

Cómo luchar contra Fox News con mercados publicitarios en línea laberínticos

Digamos que usted es una persona razonable que está razonablemente enojada con el manejo de las noticias por parte de Fox News. Tal vez sea la forma en que sus anfitriones arrojaron mentiras peligrosas en el punto álgido de la pandemia de COVID-19, o la forma en que continúan contando descaradamente la historia de la insurrección del 6 de enero.

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

Emma Stone pone a la venta su casa en la playa de Cliffside Malibu por $ 4.2 millones: ¡vea el interior!

Emma Stone pone a la venta su casa en la playa de Cliffside Malibu por $ 4.2 millones: ¡vea el interior!

La casa de mediados de siglo del ganador del Oscar cuenta con tres dormitorios, dos baños y vistas al mar

Jeannie Mai Jenkins dice que "se deprimió mucho, mucho" durante su experiencia de amamantar

Jeannie Mai Jenkins dice que "se deprimió mucho, mucho" durante su experiencia de amamantar

"Te sientes tan derrotada cuando tu bebé tiene hambre que no estás produciendo lo suficiente para el bebé", dijo Jeannie Mai Jenkins sobre amamantar a su hija de 4 meses, Monaco.

La esposa de Bobby Brown, Alicia, no se enfoca en su pasado: "Bobby y Whitney fueron su momento, soy el Yin de su Yang"

La esposa de Bobby Brown, Alicia, no se enfoca en su pasado: "Bobby y Whitney fueron su momento, soy el Yin de su Yang"

La pareja de casi 10 años comparte su historia de amor antes de la nueva serie de realidad de A&E Bobby Brown: Every Little Step, que se estrenará el 31 de mayo.

Notas de inversión: Bioscout AU $ 3m Seed

Notas de inversión: Bioscout AU $ 3m Seed

Bioscout tiene la misión de poner a los agricultores en el asiento del conductor y estamos entusiasmados de respaldar al equipo en su última ronda de semillas junto con Artesian (GrainInnovate) y Uniseed. El problema La pérdida significativa de cosechas por enfermedades fúngicas ha resultado ser un calvario para los agricultores.

Pequeña investigación de mercado 1 | Quick Glimpse Telehealth Market en 2022

Pequeña investigación de mercado 1 | Quick Glimpse Telehealth Market en 2022

La telesalud no es nueva ni siquiera una vertical obsoleta en la era posterior a la pandemia. Pero cuando miramos más de cerca la industria, muestra una fuerte sostenibilidad en la demanda y la oferta y una fuerte curva de crecimiento potencial que sería una revolución constante en los EE. UU.

Clima de financiación de empresas emergentes: ¿Qué sigue para el ecosistema de empresas emergentes de Tailandia?

Clima de financiación de empresas emergentes: ¿Qué sigue para el ecosistema de empresas emergentes de Tailandia?

El año 2021 fue un año récord para la financiación de capital de riesgo (VC) a nivel mundial. El sudeste asiático no fue la excepción, ya que la región acuñó un récord de 25 nuevos unicornios en el año, según DealStreetAsia.

Más allá de la Ley de Moore

Más allá de la Ley de Moore

Existe una brecha que crece exponencialmente entre nuestro apetito por la computación y lo que puede ofrecer la Ley de Moore. Nuestra civilización se basa en la computación: debemos encontrar tecnologías que trasciendan las limitaciones actuales de la arquitectura y la imaginación.

Language